实体框架多列,通过流畅API主键(Entity Framework Multiple Column

2019-07-21 18:53发布

这是我简单的域类。

public class ProductCategory
{
    public int ProductId { get; set; }
    public int CategoryId { get; set; }

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

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

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? ParentCategoryId { get; set;} 
} 

这是我的映射类。 但它不工作。

public class ProductCategoryMap : EntityTypeConfiguration<ProductCategory>
{
    public ProductCategoryMap()
    {
        ToTable("ProductCategory");
        HasKey(pc => pc.ProductId);
        HasKey(pc => pc.CategoryId);
    }
}

我应该如何映射这些类来提供,这样一个产品可以在多个类别中可以看出?

Answer 1:

使用匿名类型的对象,而不是2个独立的语句:

    HasKey(pc => new { pc.ProductId, pc.CategoryId});

从MSDN: EntityTypeConfiguration.HasKey方法

如果主键由多个属性的多达然后指定匿名类型包括属性。 例如,在C# t => new { t.Id1, t.Id2 }和在Visual Basic.net Function(t) New From { t.Id1, t.Id2 }



Answer 2:

无奈的是,特别是如果你碰巧不是能流畅拉姆达,在MSDN VB的例子是错误的...这应该是一个“用”,而不是“从”。

(感谢阿基Siponen )



文章来源: Entity Framework Multiple Column as Primary Key by Fluent Api