本文介绍了删除Master Detail场景中的记录,其中Master和Detail模型都实现了TPT .. Referential Integrity Constraint错误。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述        public   class   城镇      {         public   int &NBSP; TownID &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;  get ;              设置;         }           public   string   TownName    ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; get ;              set ;         }        ;   ObservableCollection < House >  houses;          [ ForeignKey (" TownID" )]         public   ObservableCollection < 房子> 房子                         get &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {                  if  (房屋  ==  null )                      houses  =  new   ObservableCollection < House >();          ;         return   houses;              }              设置 &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;    houses  =  value ;             ; }        }     }      public   abstract   class   Property      {         public   int &NBSP;物业ID &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;  get ;              设置; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;} &NBSP ;   }       public   class   House  :  财产      {         公开  字符串  HouseAddress          {             get ;   ;            set ;      ;    }          public   ; int   TownID          {             get ;   ;            set ;      ;    }          [ ForeignKey (" TownID" )]         公开  城镇 城镇         {              get ;               set ;          }来自        ObservableCollection < 房间> 房间;      ;     [ ForeignKey (" HouseID" )]          public   ObservableCollection < 房间> 房间         {  ;            get      &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;  if  (rooms  ==  null )    ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&N bsp;       rooms  =  new   ObservableCollection < 房间>();           ;        return   rooms;              }              设置 &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;           rooms  =  value ;    &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;} &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;} &NBSP;&NBSP;   }   ;    public   class   区域      {         公开  int   AreaID          {              get ;               set ;          }    }      public   class   房间  ;:  区域      {     &nb sp;   public   string   RoomName      ;      {             获取;              set ;         }          公开  int   HouseID          {             get ;   ;            set ;      ;    }          [ ForeignKey (" HouseID" )]          public   House   House           {             get ;              set ;        }     } 以下是模型构建器声明         protected   覆盖  void   OnModelCreating(模型构建器&NBSP;模型构建器)&NBSP;&NBSP;&NBSP;&NBSP;&N bsp;    {             base .OnModelCreating(modelBuilder);              modelBuilder.Entity< Property >()。ToTable(" Properties" );               modelBuilder.Entity< House >()。ToTable(" Houses" );             modelBuilder.Entity< 建筑物>()。ToTable("建筑物");               modelBuilder.Entity< Area >()。ToTable("区域");             modelBuilder.Entity< 房间>()。ToTable(" Rooms" );      ;    } 执行以下DeleteRecords方法会出错          private   static   void   DeleteRecords()         {              Model。 CityCatalog   cat  =  new   Model。 CityCatalog ();     ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; cat.Towns.Loa d(); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; cat.Houses.Load(); &NBSP;&NBSP;&NBSP;           cat.Rooms.Load();               城镇  MyTown  =  cat.Towns.Take(1).First();              foreach  (  House   h    MyTown.Houses.ToList())    ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;     foreach  (会议室  r  中&NBSP; h.Rooms.ToList())&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&N BSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; h.Rooms.Remove(R); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; cat.Rooms.Remove(R); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;     }                 &NBSP; MyTown.Houses.Remove(H); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; cat.Houses 。删除(h);             }      ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; cat.SaveChanges(); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;}&NBSP; DELETE sta与REFERENCE约束"FK_Rooms_Houses"冲突的tement。冲突发生在数据库"OZTowns",表"dbo.Rooms",列'HouseID'。 该声明已被终止。 我已经重新检查了几次,并没有发现我想要做的任何事情。   NeoTech 解决方案 这可能与集合属性上的"[ForeignKey]属性"有关。问题出现在你的其他几个主题中。 你可以尝试删除它们吗?如果你仍然有问题发布代码,我会看看。 ~Rowan      public class Town    {        public int TownID        {            get;            set;        }         public string TownName        {            get;            set;        }         ObservableCollection<House> houses;         [ForeignKey("TownID")]        public ObservableCollection<House> Houses        {            get            {                if (houses == null)                    houses = new ObservableCollection<House>();                 return houses;            }            set            {                houses = value;            }        }    }    public abstract class Property    {        public int PropertyID        {            get;            set;        }    }     public class House : Property    {        public string HouseAddress        {            get;            set;        }         public int TownID        {            get;            set;        }         [ForeignKey("TownID")]        public Town Town        {            get;            set;        }         ObservableCollection<Room> rooms;         [ForeignKey("HouseID")]        public ObservableCollection<Room> Rooms        {            get            {                if (rooms == null)                    rooms = new ObservableCollection<Room>();                 return rooms;            }            set            {                rooms = value;            }        }    }    public class Area    {        public int AreaID        {            get;            set;        }    }    public class Room : Area    {        public string RoomName        {            get;            set;        }         public int HouseID        {            get;            set;        }         [ForeignKey("HouseID")]        public House House        {            get;            set;        }    }Below are the model builder declarations        protected override void OnModelCreating(ModelBuilder modelBuilder)        {            base.OnModelCreating(modelBuilder);             modelBuilder.Entity<Property>().ToTable("Properties");            modelBuilder.Entity<House>().ToTable("Houses");            modelBuilder.Entity<Building>().ToTable("Buildings");             modelBuilder.Entity<Area>().ToTable("Areas");            modelBuilder.Entity<Room>().ToTable("Rooms");        }Executing the below DeleteRecords method gives error        private static void DeleteRecords()        {            Model.CityCatalog cat = new Model.CityCatalog();             cat.Towns.Load();            cat.Houses.Load();            cat.Rooms.Load();             Town MyTown = cat.Towns.Take(1).First();             foreach ( House h in MyTown.Houses.ToList())            {                foreach (Room r in h.Rooms.ToList())                {                    h.Rooms.Remove(r);                    cat.Rooms.Remove(r);                }                 MyTown.Houses.Remove(h);                cat.Houses.Remove(h);            }             cat.SaveChanges();        } The DELETE statement conflicted with the REFERENCE constraint "FK_Rooms_Houses". The conflict occurred in database "OZTowns", table "dbo.Rooms", column 'HouseID'.The statement has been terminated.I have rechecked a couple of times and don't find anything wrong in what i am trying to do. NeoTech 解决方案 Hi,This may be related to the "[ForeignKey] attribute on collection properties" issue that has come up in a couple of your other threads.Can you try removing them and if you still have issues post up the code and I will take a look.~Rowan 这篇关于删除Master Detail场景中的记录,其中Master和Detail模型都实现了TPT .. Referential Integrity Constraint错误。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-26 19:46