2013-07-18 70 views
1

我有两个1:1关系的表。我使用实体框架的模型第一方法创建它们。现在我想要删除一条记录,但是我不能从一个表中删除,而不能从另一个表中删除,当我尝试出现以下异常时:实体框架无法删除与关系的对象

'正在从AssociationSet'FK_lm_ab_profile_lm_profile_master'添加或删除关系。由于基数限制,还必须添加或删除相应的'lm_ab_profile'。'

我有一个关系到ABProfile的个人资料表,我想从个人资料和AbProfile中删除。它们都使用PROFILE_ID作为PK,和ABProfile已PROFILE_ID为FK

我的代码:

 //Get the old profile to see if one already exists 
      var oldProfile = context.lm_profile_master.FirstOrDefault(p => p.profile_id.Equals(profileID)); 

      lm_ab_profile ab = new lm_ab_profile(); 

      //Check to see if user doesn't already exist 
      if (oldProfile != null) 
      { 

        //try and specify the relationship between profile and ABProfile using profileID 
        oldProfile.lm_ab_profileReference.EntityKey = new System.Data.EntityKey("luminusEntities.lm_ab_profile", "profile_id", profileID);  


        //remove found object from the database and persist changes 

        context.DeleteObject(oldProfile); 
        context.SaveChanges(); 
       } 

如何指定,当我从一个删除记录的两个表是相关的,对方记录得到删除也...我设置我的表模型上的层叠功能。

回答

0

你描述的情况是表之间的约束。你试图影响一致性。

看这个Delete an object and all of its related entities in Entity Framework并定义ON DELETE CASCADE

+0

是的,我已经设置了,但是当我尝试删除表要求我先指定与FK表,在这种情况下ABprofile参考来分析大师null ...这就是我想要在上面存档的东西。 – Ndupza

+0

我不确定我是否正确理解它。 但是,如果您正确设置ON DELETE ACTION,则ABprofile对MasterProfile具有空引用是不可能的。 也许你设置ON DELETE ACTION = SET NULL? 我不是一个实体框架用户,但我认为它是数据库层的问题。 –

+0

看起来像我的对象状态管理器没有正确组织,一直在调试,但在这个玉米中找不到东西 – Ndupza