решено
Я пытаюсь выяснить, как я могу получить набор связанных данных из таблицы в рамках сущностей, но я еще не решил ее.
Это соотношение многих ко многим между двумя таблицами, как показано на рисунке ниже:
Моя проблема заключается в том, что я хочу получить связанные книги для автора, который представляет собой ICollection таблицы BOOK, но вместо этого при возврате мне выдает пустой список. Я попытался решить эту проблему с помощью явной загрузки:
public AUTHOR Read(int Aid)
{
using(var db = new LibraryDBEntities1())
{
var author = db.AUTHORs.Find(Aid);
db.Entry(author).Collection(a => a.BOOKs).Load();
return author;
}
}
Я также попытался увеличить ее, используя готовую загрузку
return db.AUTHORs.Where(a => a.Aid == Aid).Include("BOOKs").FirstOrDefault();
, но она также не работала. Я пытался следовать документации по Microsoft Docs Загрузка связанных объектов , но я не смог понять, что я делаю неправильно. Может кто-нибудь помочь мне с этой проблемой и, возможно, объяснить, где я делаю неправильно?
РЕДАКТИРОВАТЬ 1 Так выглядит OnModelCreating. Должен ли я изменить / добавить код здесь? Я использую подход Database First.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
EDIT 2
Соединение базы данных должно выглядеть следующим образом:
РЕДАКТИРОВАТЬ 3
Я забыл упомянуть, что я использую 3-уровневую архитектуру, включая уровень представления (MVC) уровень бизнес-логики c и уровень доступа к данным. А также слой данных, который включает в себя базу данных, как показано на рисунке ниже.
РЕШЕНИЕ
Так что я наконец-то решил это! Так что проблема была не совсем той, о которой я сначала подумал, а скорее из-за того, как я использую свой Mapper. Мне пришлось добавить следующий код в мою модель, чтобы заставить его работать:
authorObj.BooksList = Mapper.Map<List<BOOK>, List<Book>>(aauthor.BOOKs.ToList());
Теперь все работает как надо!