Entity Framework - table 需要两个外键指向同一个 table
Entity Framework - table needs two foreign keys pointing at same table
我正在处理一个现有项目,该项目的数据库包含 table 个 "Contacts" : Id, FirstName, LastName, MobileNumber
等
我现在想实现一个 table,借此我可以 link 对联系人在一起。我已经构建了一个名为 contactMatches: Id, contact1, contact2
的 class,其中 contact1
和 contact2
应该 link 作为 FK 到 contactId 列。我正在考虑使用 entity framework 的 Modelbuilder.Entity
功能为代表 class 的 table 创建数据关系。
我对数据库设计比较陌生,entity framework。这可以在一个 linking table 内完成吗?还是我需要走另一条路?
我考虑过的另一条路线是创建 table 只是将 contact1
和 contact2
存储为整数,因为它仅在交叉引用 [=38] 时使用=] 数据库中的其他 tables。这看起来很糟糕,因为 contactMatches
table 可能包含不存在的 contactId,因此需要对此加以防范....
做我想做的事情的最佳方法是什么,有什么想法吗?
谢谢,
JK
您可以在覆盖的 OnModelCreating 方法中做到这一点
modelBuilder.Entity<Contacts>()
.HasMany(e => e.ContactMatches1)
.WithRequired(e => e.Contact1)
.HasForeignKey(e => e.Id);
modelBuilder.Entity<Contacts>()
.HasMany(e => e.ContactMatches2)
.WithRequired(e => e.Contact2)
.HasForeignKey(e => e.Id);
前提是 ContactMatches1 + 2 是您在联系人中的导航属性class
public virtual ICollection<ContactMatches> ContactMatches1 { get; set; }
我正在处理一个现有项目,该项目的数据库包含 table 个 "Contacts" : Id, FirstName, LastName, MobileNumber
等
我现在想实现一个 table,借此我可以 link 对联系人在一起。我已经构建了一个名为 contactMatches: Id, contact1, contact2
的 class,其中 contact1
和 contact2
应该 link 作为 FK 到 contactId 列。我正在考虑使用 entity framework 的 Modelbuilder.Entity
功能为代表 class 的 table 创建数据关系。
我对数据库设计比较陌生,entity framework。这可以在一个 linking table 内完成吗?还是我需要走另一条路?
我考虑过的另一条路线是创建 table 只是将 contact1
和 contact2
存储为整数,因为它仅在交叉引用 [=38] 时使用=] 数据库中的其他 tables。这看起来很糟糕,因为 contactMatches
table 可能包含不存在的 contactId,因此需要对此加以防范....
做我想做的事情的最佳方法是什么,有什么想法吗?
谢谢, JK
您可以在覆盖的 OnModelCreating 方法中做到这一点
modelBuilder.Entity<Contacts>()
.HasMany(e => e.ContactMatches1)
.WithRequired(e => e.Contact1)
.HasForeignKey(e => e.Id);
modelBuilder.Entity<Contacts>()
.HasMany(e => e.ContactMatches2)
.WithRequired(e => e.Contact2)
.HasForeignKey(e => e.Id);
前提是 ContactMatches1 + 2 是您在联系人中的导航属性class
public virtual ICollection<ContactMatches> ContactMatches1 { get; set; }