У меня есть следующие сущности в моем dbml: (составлен для примера)
Book <- Media -> AuthorsForMedia <- Author
Стрелки - это отношения в моем dbml.
Книга представляет собой тип носителя, а экземпляр книги имеет медиа-свойство со значениями, присущими всем носителям. AuthorsForMedia - это пересекающаяся таблица с AuthorId, MediaId и AuthorsForMediaId.
Мой запрос в моем репозитории:
public Book Get(int id)
{
var query = from b in db.Books
where b.BookId == id
select b;
return query.Single();
}
Получаемый объект имеет установленные свойства книги и свойство media со всеми его значениями.
Когда я смотрю на AuthorsForMedia в диалоговом окне "Смотреть" во время отладки, устанавливаются следующие значения:
Count = 0
HasLoadedOrAssignedValues = false
IsDeferred = false
Почему значения AuthorsForMedia (а затем и его свойства Author) не могут быть оценены с помощью ленивой загрузки?
После прочтения этого вопроса:
Я попробовал DataLoadOptions с LoadWith/AssoicateWith, и это не сработало. Я закончил с ошибками как
Я могу предоставить фрагменты кода для всего этого, если это помогает, но я думаю, что его концептуальная проблема не является синтаксической.
Как мне получить эти значения, если это левое соединение или что-то еще, что я еще не нашел?
Вот как выглядит LoadWith.
DataLoadOptions dlOptions = new DataLoadOptions();
dlOptions.LoadWith<Books>(book => book.AuthorsForMedia);
db.LoadOptions = dlOptions;
DataLoadOptions и LoadWith() - это то, что вам нужно.
Как вы их называете?