0

我正在使用包含"Contacts" : Id, FirstName, LastName, MobileNumber等表的数据库处理现有项目。

我现在想要实现一个表,我可以将成对的联系人链接在一起。我已经构建了一个名为contactMatches: Id, contact1, contact2where的类,contact1并且contact2应该作为 FK 链接到 contactId 列。我正在研究使用实体框架Modelbuilder.Entity功能为表示类的表创建数据关系。

我对数据库设计和实体框架比较陌生。这可以在一个链接表中完成,还是我需要走不同的路线?

我考虑过的另一条路线是创建表,仅将contact1contact2作为整数存储,因为它仅在交叉引用数据库中的其他表时使用。这似乎很糟糕,因为该contactMatches表可能包含不存在的contactId,因此需要防止这种情况发生......

什么是做我想做的最好的方法,有什么想法吗?

谢谢,JK

4

1 回答 1

0

您可以在重写的 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 是您在 Contacts 类中的导航属性

public virtual ICollection<ContactMatches> ContactMatches1 { get; set; }
于 2015-04-08T16:03:08.153 回答