【发布时间】:2013-08-17 18:53:18
【问题描述】:
我正在尝试基于一个实体与另一个实体作为外键关系执行选择。
我在测试中恢复了对象,它们是正确的对象,但由于某种原因,我在 Asserts 中遇到了失败。有时会加载相关的实体,有时则不会。
LINQ 代码如下所示:
var toDoList = _dbSet.Where(s => Context.ToDos.Where(std => std.UserId == userId && std.Id == s.Id).Any()).AsEnumerable();
ToDo 列表包含我从 _dbSet 中选择的实体的 ID。我想知道这是否与延迟加载或我的 LINQ 问题有关。我怎样才能可靠地加载相关实体?
【问题讨论】:
-
我对保留对 dbset 作为类成员的引用持怀疑态度。为什么需要这样做?为什么不直接参考您的上下文来获取它?
-
可能相关:AsEnumerable 不会像 ToList 或 ToArray 那样执行查询 - 它只是将其转换为 IEnumerable 但执行会延迟到迭代为止。
-
是的,我一发布这个并修改了我的代码就意识到了这一点。我现在立即调用 AutoMapper,以便在该过程中初始化所有属性。
标签: c# linq entity-framework ef-code-first