EF 4 Code First:定义导航属性

时间:2011-12-26 18:17:21

标签: entity-framework-4 ef-code-first

我有以下实体:

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解释它的方式显然是错误的,因为有多个优惠券对一个产品实体有效。

请帮助我找到我做错的事。

1 个答案:

答案 0 :(得分:4)

如果您想拥有多对多关系,您必须指示EF创建它。

builder.Entity<Coupon>().HasMany(x => x.Products).WithMany();