mvc的代码第一种方法中的循环依赖

时间:2013-09-16 04:16:28

标签: sql entity-framework ef-migrations

我有三张桌子:

Group, Contact and Address

群组

  GroupID (pk)              
  GName 

联络

 ContactID (pk)                                                                   
 GroupID (fk)   
 Name 

地址

AddressID (pk)
GroupID   (fk) 
ContactID (fk)

我想跟随使用这三个表:

  1. 当我删除/更新组详细信息时,必须删除/更新联系人和地址。
  2. 当我删除/更新联系人详细信息时,请联系&地址必须删除/更新。
  3. 我想通过地址(包含地址的组)找到分组。
  4. 如何在实体框架中的代码优先方法中解决它?

    如何在实体框架中的数据库第一种方法中解决它?

    最后;

    我在SQL数据库中创建这些表时遇到问题。我有一个循环依赖错误。

1 个答案:

答案 0 :(得分:0)

关于Cyclic依赖,它由于外键到位。因此,您应该首先创建Group表,然后创建Contact,最后创建Address,同样,在删除行时,应该从依赖表开始(包含外部表的那些表)键)

回答你的问题;

  1. 首先,由于在其他表中只使用GroupID,因此您不必关心更新(我认为您不会更新ID!) 。但要删除,您需要首先使用Address table中的GroupID删除所有行。然后是Contact table中的所有行。只有这样,您才可以继续删除Group table

  2. 中的行
  3. 要删除联系人,您应该首先删除Address table中带有ContactID的所有行,然后删除Contact table

  4. 3找到包含您地址的群组;

    Select G.GroupId, G.GName 
    From   Group as G
    Left outer join Address A
    on A.GroupID    = G.GroupID   
    Where A.AddressID = 'Your Address ID'