2016-03-21 4 views
1

У меня есть таблица Packages, содержащая информацию о пакете (носитель, вес ..).Entity Framework - много для многих

Я хочу, чтобы связать продукты для этого пакета, так что я сделал следующее:

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 в таблицу продуктов, но это отношения многие ко многим. Как я могу поддерживать, если возможно, список продуктов в таблице пакетов, но знаю ли он, что это много?

Спасибо.

+0

Вам необходимо объединение таблицы, которые ссылаются на идентификатор пакета и идентификатор продукта для создания многих многие. Орма может поддерживать это прозрачно или с отдельным объектом. –

+0

Вы не показали, как вы заполняете список Package.Products? Все зависит от вас лямбда-выражения, которое должно возвращать только список продуктов в этом пакете. Как навязывается много-много отношений? у вас есть таблица rel? – DaniDev

ответ

0

Если вы хотите упаковать, чтобы иметь отношения многие ко многим с продуктом, добавьте это вместо списка

public virtual ICollection<Products> Products {get;set;} 

И в таблице Product добавьте эту строку

public virtual ICollection<Package> Packages {get;set;} 

EF создаст новую таблицу названный как ProductsPackages. Каждая строка представляет одно отношение, которое друг к другу.

0

От многих до многих отношений в структуре сущности создаются таблицы соединений. Вы можете создать их путем сопоставления отношений, или вы сами можете создать таблицу соединений.

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; } 
} 

Джимми Богард обсуждает, какой метод использовать: https://lostechies.com/jimmybogard/2014/03/12/avoid-many-to-many-mappings-in-orms/

Смежные вопросы