EF6: доступ к сопоставленной таблице, созданной с помощью первого свободного API кода.

У меня есть сгенерированная таблица через свободный API следующим образом:

modelBuilder.Entity<Person>()
.HasMany(m => m.Friends)
.WithMany()
.Map(w => w.ToTable("Friendship").MapLeftKey("PersonID").MapRightKey("FriendID"));

И это прекрасно работает, таблица формируется правильно. Но на моем уровне доступа к данным, как я могу выполнять функции CRUD для этой таблицы «Дружба» через Entity Framework? Потому что я не могу сделать что-то вроде этого:

db.Friendships.Add(entity);

потому что «Дружба» не определена в моем DBContext.

Как лучше всего подойти к этой проблеме? Вручную создать модель или жестко запрограммировать SQL-запросы на уровне доступа к данным? Или другое решение?


person Ruben Vervaeke    schedule 25.11.2014    source источник


Ответы (1)


Вы не можете напрямую получить доступ к сущности Friendship, потому что она не существует. То, как Entity Framework обрабатывает отношения «многие ко многим», таблица Friendship невидима и никогда не моделируется. Если вы хотите, чтобы он был доступен как сущность, вы должны явно добавить сущность в модель и заменить отношение «многие ко многим» двумя отношениями «один ко многим».

Если все, что вы спрашиваете, это как создать отношения между сущностями в структуре сущностей «многие ко многим», это должно быть так же просто, как добавление ссылок на коллекции.

Если Person1 и Person2 являются сущностями, то Person1.Friends.Add(Person2) должно помочь.

person JC Ford    schedule 25.11.2014