Давайте начнем с физических таблиц, которые вам понадобятся:
Part { Id, Name, Price }
Car { Id, Name, Price }
Order { Id }
OrderPart* { OrderId, PartId }
OrderCar* { OrderId, CarId }
Последние две таблицы называются «таблицами объединения», поскольку они нужны для того, чтобы иметь возможность хранить несколько деталей и несколько автомобилей в одном порядке., но на самом деле это не таблицы, которые вы считаете частью своей модели.
Entity Framework автоматически создаст эти таблицы объединения, если вы настроите свои классы следующим образом:
public class Car
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
public class Part
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
class Order
{
public Order()
{
Cars = new List<Car>();
Parts = new List<Part>();
}
public int OrderId { get; set; }
public virtual ICollection<Car> Cars { get; set; }
public virtual ICollection<Part> Parts { get; set; }
}
Обратите внимание, чтосвойства ICollection <> в таблице Car и Part будут ключом к EF, необходимому для создания таблицы соединения.Кроме того, помните, что вам нужно "виртуальный" в ваших свойствах навигации.