Используется Code First.
Есть модели Productи User. Пользователь может иметь много продуктов купленных онлайн и много купленных оффлайн. В то же время у продукта есть список пользователей, которые приобрели онлайн и список оффлайн соответственно.
Получается мы имеем 2 связи многие ко многим. Как реализовать это в классах моделей?
public class Product
{
public int Id { get; set; }
public int Price { get; set; }
public virtual ICollection
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection
Насколько знаю, при связи многие ко многим EF автоматически создает третью таблицу, именуя ее ProductUsers. Но если связи две, как будут именоваться дополнительные таблицы? И как можно изменить правило именования промежуточных таблиц, каким атрибутом или Fluent API?
Ответ
Fluent API
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity
modelBuilder.Entity
Всего будет 4 таблицы: Product, User, OnlineProductUsers, OfflineProductUsers
Data Annotations
public class Product
{
public int Id { get; set; }
public int Price { get; set; }
[InverseProperty("OnlinePurchases")]
public virtual ICollection
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection
Недостаток в том, что EF сам придумает названия новым таблицам
Всего будет 4 таблицы: Product, User, ProductUsers, ProductUser1
Комментариев нет:
Отправить комментарий