数据库ML
我的 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();
}
生成的对象设置了 book 属性,并设置了 media 属性及其所有值。
当我在调试时在 Watch 对话框中查看 AuthorsForMedia 时,设置了以下值:
Count = 0
HasLoadedOrAssignedValues = false
IsDeferred = false
问题 1
为什么不能通过延迟加载来评估 AuthorsForMedia 的值(以及相应的 Author 属性)?
我尝试过的事情
读完这个问题后:
我用 LoadWith/AssoicateWith 尝试了 DataLoadOptions,但它没有用。我最终遇到了类似的错误
- 无法创建类 Foo 错误的实例:System.NotSupportedException:Book 类型的媒体不支持子查询
- ... System.InvalidOperationException:指定的表达式必须采用 pA 的形式,其中 p 是参数,A 是属性或字段成员
- 或者价值不存在
如果有帮助,我可以为所有这些提供代码片段,但我认为这是一个概念问题,而不是语法问题。
概括
我应该如何检索这些值,它应该是左连接还是我到目前为止还没有找到的其他东西?