DBML
У меня есть следующие сущности в моем dbml: (составлено для примера)
Book <- Media -> AuthorsForMedia <- Author
Стрелки - это отношения в моем БД.
Книга - это тип носителя, и экземпляр книги имеет свойство носителя со значениями, общими для всех носителей в нем. 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 в диалоге Watch во время отладки, устанавливаются следующие значения:
Count = 0
HasLoadedOrAssignedValues = false
IsDeferred = false
Вопрос 1
Почему значения для AuthorsForMedia (а затем и соответствующего ему свойства Author) не могут быть оценены с отложенной загрузкой?
Вещи, которые я пытался
Прочитав этот вопрос:
Я пытался использовать DataLoadOptions с LoadWith / AssoicateWith, и он не работал. Я закончил с ошибками вроде
- Невозможно создать экземпляр класса Foo Ошибка: System.NotSupportedException: подзапрос не поддерживается на носителе типа Book
- ... System.InvalidOperationException: указанное выражение должно иметь форму p.A, где p - параметр, а A - свойство или член поля
- Или значения просто не было
Я могу предоставить фрагменты кода для всего этого, если это поможет, но я думаю, что это концептуальный вопрос, а не синтетический.
Резюме
Как мне получить эти значения, левое соединение или что-то еще, чего я до сих пор не нашел?