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,其中 contact1contact2 应该 link 作为 FK 到 contactId 列。我正在考虑使用 entity framework 的 Modelbuilder.Entity 功能为代表 class 的 table 创建数据关系。

我对数据库设计比较陌生,entity framework。这可以在一个 linking table 内完成吗?还是我需要走另一条路?

我考虑过的另一条路线是创建 table 只是将 contact1contact2 存储为整数,因为它仅在交叉引用 [=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; }