EF中额外列的同一表之间的多对多关系

时间:2013-10-12 15:30:22

标签: entity-framework many-to-many

LOL。对于EF进行建模,这可能是最复杂的情​​况?我甚至怀疑这种情况是否得到支持。 我的业务就像我需要知道哪个应用程序与另一个应用程序匹配的原因。因此,表示关系的表格如下所示:

PrimaryApplicationID,SecondaryApplicationID,MatchedRuleID

行。现在我甚至可以使用EF代表这种关系吗?如果是的话,我需要在数据库方面做些什么特别的事情?我正在使用数据库优先方法,但这不重要,是吗?

感谢任何线索。

1 个答案:

答案 0 :(得分:1)

使用Database-First,您将创建三个表,例如:

  • Applications

    ApplicationId           int  NOT NULL PK
    ...Other columns...
    
  • Rules

    RuleId                  int  NOT NULL PK
    ...Other columns...
    
  • MatchingApplications

    PrimaryApplicationId    int  NOT NULL PK, FK to Applications table
    SecondaryApplicationId  int  NOT NULL PK, FK to Applications table
    MatchedRuleId           int  NOT NULL FK to Rules table
    

MatchingApplications中的双PK意味着是一个复合键。双FK意味着两个单独的外键关系到同一个表Applications.您不能为两个关系启用级联删除,因为SQL Server不允许多个级联删除路径同桌。

EF应该从这个数据库模式中创建三个实体:

  • Application具有两个元素类型为MatchingApplication
  • 的集合的实体
  • Rule实体,其中包含一个元素类型为MatchingApplication
  • 的集合
  • MatchingApplication实体,其中包含两个类型为Application的导航参考和一个类型为Rule的导航参考。