Код EF 4: определение свойства навигации - PullRequest
1 голос
/ 26 декабря 2011

У меня есть следующие объекты:

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 интерпретирует это, очевидно, неверно, так как для одной сущности Product существует несколько купонов.

Пожалуйста, помогите мне найти, что я делаю неправильно.

1 Ответ

4 голосов
/ 26 декабря 2011

Если вы хотите иметь отношение «многие ко многим», вы должны указать EF создать его.

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