使用Fluent Api的实体框架多列为主键
本文关键字:框架 Fluent Api 实体 使用 | 更新日期: 2023-09-27 18:04:31
这些是我简化的域类
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);
}
}
我应该如何映射这些类来提供,以便一个产品可以在多个类别中看到?
使用匿名类型对象代替两个分隔语句:
HasKey(pc => new { pc.ProductId, pc.CategoryId });
来自Microsoft Docs: EntityTypeConfiguration。HasKey方法
如果主键由多个属性组成,则指定包含这些属性的匿名类型。例如,在c#
t => new { t.Id1, t.Id2 }
和Visual Basic . netFunction(t) New With { t.Id1, t.Id2 }
中。