3

嗨,我开发了非常适合我的模型,现在我想使用 EntityFramework 将它映射到数据库,这是其中的一部分:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ProductType Type { get; set; }
}

public class Supplier
{
    public int Id { get; set; }
    public string OIB { get; set; }
    public string Name { get; set; }
}

public class SupplierProduct
{
    public double Price { get; set; }
    public string SupplierMark { get; set; }

    public virtual Product Product { get; set; }
    public virtual Supplier Supplier { get; set; }
}

现在我的问题是如何在我的 DBContext 中的 ModelBuilder 上编写实体配置,以便它映射到 SupplierProduct 类 ForeignKeys Supllier.ID 和 Product.Id 作为数据库关系的主键。

4

1 回答 1

4

我使用数据注释,但我希望您正在寻找以下内容:

Product为和Supplierin定义 ID 属性SupplierProduct,将这些 ID 字段指定为 FK,然后使用两个 ID 字段定义复合主键

modelBuilder.Entity<SupplierProduct>()
    .HasRequired( sp => sp.Product)
    .WithMany( p => SupplierProducts )
    .HasForeignKey( sp => sp.ProductId );

modelBuilder.Entity<SupplierProduct>()
    .HasRequired( sp => sp.Supplier)
    .WithMany( s => SupplierProducts )
    .HasForeignKey( sp => sp.SupplierId );

modelBuilder.Entity<SupplierProduct>()
    .HasKey(sp=> new { sp.ProductId, sp.SupplierId });
于 2013-04-02T03:10:33.310 回答