[英]Entity Framework 6 Adding properties to join tables
这是场景:我有一个产品表和一个类别表。 这种关系是多对多的:一个类别可以有一个或多个产品......一个产品可以是一个或多个类别......
Code-First映射看起来像这样....
public class Product
{
//...additional properties...
public virtual ICollection<Category> AssociatedCategories {get; set;}
}
public class Category
{
//...additional properties...
public virtual ICollection<Product> AssociatedProducts {get; set;}
}
现在,实体框架将创建一个名为ProductCategory的连接表,其中包含ProductID和CategoryID列。 那很棒....
不过,我需要引入一个排序顺序...基本上只是一个基数定位索引,但这个数字仅存在于产品和类别相互满足的关系中。 例如,产品X在类别Y中可能具有排序顺序值“5”,但是某些产品 - X - 在类别Z中可能具有不同的排序值(例如10)。
当然,我可以专门为这种类型的东西创建一个实体......但它需要一个新的表...类别ID,产品ID和排序顺序将有3列。 我真正希望能够做的是进入实体框架已经制作的表格......它已经在连接表中跟踪产品ID和类别ID ....有什么方法可以做使用已经存在的表?
您需要为连接表创建特定实体才能执行此操作。
public class Product
{
//...additional properties...
public virtual ICollection<ProductCategoryXref> AssociatedCategories {get; set;}
}
public class Category
{
//...additional properties...
public virtual ICollection<ProductCategoryXref> AssociatedProducts {get; set;}
}
public class ProductCategoryXref
{
public int ProductId { get; set; }
public int CategoryId { get; set; }
public int SortOrder { get; set; }
// Additional Columns...
public virtual Product Product { get; set; }
public virtual Category Category { get; set; }
}
如果您使用Fluent API配置实体,它将如下所示:
public class ProductCategoryXrefMap : EntityTypeConfiguration<ProductCategoryXref>
{
ProductCategoryXrefMap()
{
HasKey(pk => new { pk.ProductId, pk.CategoryId });
HasRequired(p => p.Product).WithMany(p => p.AssociatedCategories).HasForeignKey(fk => fk.ProductId);
HasRequired(p => p.Category).WithMany(p => p.AssociatedProducts).HasForeignKey(fk => fk.CategoryId);
ToTable("ProductCategoryXref");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.