0

У меня есть сгенерированная таблица с помощью текучего API следующим образом:EF6: Доступ к отображенной таблице, сгенерированную с помощью кода первого текучего 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); 

потому что «Дружба» не определена в моем DBC-тексте.

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

ответ

2

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

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

Если Person1 и Person2 являются объектами, то Person1.Friends.Add(Person2) должен сделать трюк.