[英]Entity Framework - many to many
我有一个Packages表,其中包含有关包(载体,重量......)的信息。
我想为该软件包关联产品,所以我做了以下事情:
public class Package
{
public int ID { get; set; }
public Order Order { get; set; }
public int Weight { get; set; }
public List<Product> Products { get; set; }
}
发生的事情是它将package_id添加到products表中,但这是一个多对多的关系。 如果可能的话,我如何维护包表中的产品列表,但是它知道它是多对多的?
谢谢。
如果您希望Package与产品有多对多的关系,请添加此而不是List
public virtual ICollection<Products> Products {get;set;}
在Product表中添加此行
public virtual ICollection<Package> Packages {get;set;}
EF将创建一个名为ProductsPackages的新表。 每一行代表一个相互关联的关系。
实体框架中的多对多关系是使用联结表创建的。 您可以通过映射关系来创建它们,也可以自己创建联结表。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Package>()
.HasMany<Product>(s => s.Products)
.WithMany(c => c.Packages)
.Map(cs =>
{
cs.MapLeftKey("PackageRefId");
cs.MapRightKey("ProductRefId");
cs.ToTable("PackageProduct");
});
}
自己创建表:
public class PackageProduct
{
public virtual Package Package { get; set; }
public virtual Product Product { get; set; }
}
吉米·博加德(Jimmy Bogard)讨论了使用哪种方法: https : //lostechies.com/jimmybogard/2014/03/12/avoid-many-to-many-mappings-in-orms/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.