В настоящее время у меня есть структура наследования в EntityFrameworkCore, которая выглядит следующим образом:
Продукт в качестве базового класса
Под этим продуктом может быть несколько продуктов. Например сотовый телефон. Этот мобильный телефон продается в многочисленных магазинах. Давайте назовем эту соединительную таблицу: cellphone_shop.
public class CellPhoneShop {
public int CellPhoneId;
public CellPhone CellPhone;
public int ShopId;
public Shop Shop;
}
В Entity Framework Core я ожидаю добавить что-то вроде:
modelBuilder.Entity<CellPhoneShop>()
.HasOne(x => x.CellPhone)
.WithMany(x => x.CellPhoneShops)
.HasForeignKey(x => x.CellPhoneId);
modelBuilder.Entity<CellPhoneShop>()
.HasOne(x => x.Shop)
.WithMany(x => x.CellPhoneShops)
.HasForeignKey(x => x.ShopId);
Но представьте себе, что есть два других продукта. Ноутбук и iPad. Ноутбук также продается в многочисленных магазинах, iPad - нет.
Как создать единую распределительную таблицу ProductShop с использованием ядра Entity Framework?
Я начал так:
public class ProductShop {
public int ProductId;
public Product Product;
public int ShopId;
public Shop Shop;
}
Со следующим отображением EF:
modelBuilder.Entity<ProductShop>()
.HasOne(x => x.Shop)
.WithMany(x => x.ProductShops)
.HasForeignKey(x => x.ShopId);
modelBuilder.Entity<ProductShop>()
.HasOne(x => x.Product)
.WithMany(??????????)
.HasForeignKey(x => x.ProductId);
Свойство WithMany не может быть заполнено элементом x.ProductShops поскольку только производные члены Laptop и CellPhone состоят из магазинов.
Спасибо за помощь.