我有以下实体:
public class Product {
[Key]
public int Id{get;set;}
//other properties
}
public Coupon {
[Key]
public int Id {get;set;}
//other properties
public virtual ICollection<Product> Products { get; set; }
public virtual ICollection<CouponCode> CouponCodes { get; set; }
}
我正在按如下方式配置DbModelBuilder
:
var builder = new DbModelBuilder();
builder.Entity<Product>().HasKey(p => p.Id);
builder.Entity<Coupon>().HasKey(a => a.Id);
//other properties
builder.Entity<Coupon>().HasMany(x => x.CouponCodes);
builder.Entity<Coupon>().HasMany(x => x.Products);
此方案正在产品表中创建Coupon_Id
。实际上我想注册给定Coupun
有效的所有产品代码。 EF解释它的方式显然是错误的,因为有多个优惠券对一个产品实体有效。
请帮助我找到我做错的事。
答案 0 :(得分:4)
如果您想拥有多对多关系,您必须指示EF创建它。
builder.Entity<Coupon>().HasMany(x => x.Products).WithMany();