实体框架代码首先是多对多的关系

时间:2013-06-25 10:44:00

标签: entity-framework-5 code-first

我首先使用Entity framwork 5代码,我有2个表:Customer和Dossier。我之间有两种类型为多对多的关系:

public class Customer {
    public int Id { get; set; }
    public string Name { get; set; }

    public List<Dossier> Debtors { get; set; }
    public List<Dossier> Creditors { get; set; }
}

public class Dossier {
    public int Id { get; set; }
    public string Name { get; set; }

    public List<Customer> Debtors { get; set; }
    public List<Customer> Creditors { get; set; }
}

如何首先使用代码实现此目的?

由于

1 个答案:

答案 0 :(得分:2)

我认为你可以使用两个关系表来实现这一点,一个用于债务人,另一个用于债权人。

modelBuilder.Entity<Customer>().HasMany(c => c.Debtors).WithMany(d => d.Debtors).Map(m => m.MapLeftKey("CustomerId").MapRightKey("DossierId").ToTable("DebtorCustomerDossierRel"));

modelBuilder.Entity<Customer>().HasMany(c => c.Creditors).WithMany(d => d.Creditors).Map(m => m.MapLeftKey("CustomerId").MapRightKey("DossierId").ToTable("CreditorCustomerDossierRel"));

我还没有尝试过这段代码,但它应该非常接近。

这将在你的DbContext.OnModelCreating方法中(对于Code First来说是新手)。