2

这不是关于如何创建多对多关系的另一个问题,而是如何实际控制映射关系的实体?

例如... 表 Product 和表 Supplier 之间的多对多关系。

我需要一个包含特定于产品+供应商组合的列的供应商产品。

class SupplierProduct {
    public int SupplierId { get; set; }
    public int ProductId { get; set; }

    // additional properties specific to a S+P combo: 
    public bool IsProductAssembled { get; set; }
}

一些供应商组装,其他供应商不组装。如果我有这样一个类,如何使用它来代替它创建的默认 EF 多对多表?

4

1 回答 1

2

改为使用您的SupplierProduct班级作为关系:

class SupplierProduct {
    public int SupplierId { get; set; }
    public int ProductId { get; set; }

    // additional properties specific to a S+P combo: 
    public bool IsProductAssembled { get; set; }
}

class Product {
    // ... lot of properties

    // Link all the suppliers of this products
    public IList<SupplierProduct> Suppliers { get; set; }
}    

class Supplier {
    // ... lot of properties

    // Link all the product this supplier supplies
    public IList<SupplierProduct> Products { get; set; }
}

然后,配置Product有很多SuppliersSupplier有很多Products. Product和之间没有直接关系Supplier

配置模型绑定器:

modelBuilder.Entity<Product>()
    .HasMany<SupplierProduct>(p => p.Suppliers)
    .WithRequired();

modelBuilder.Entity<Supplier>()
    .HasMany<SupplierProduct>(s => s.Products)
    .WithRequired();
于 2013-10-25T22:10:31.113 回答