我想查询我的Entity DbSet并从Local上下文和数据库中获取结果。
我有这个问题:
Dim lResults = MyDbContext.MyEntity.Local.Where(Function(x) x.ParentId = lId)
但这只能给我以前加载的元素的结果。
我想让它对本地和非本地数据运行查询。
我不想做MyDbContext.MyEntity.Load()
,因为它会加载数据库中的所有行,在我的情况下可能会有数千行。
修改
我意识到这是因为我确实做了以下事实:
Dim lExpression = Function(x) x.ParentId = lId
Dim lResults = MyDbContext.MyEntity.Where(lExpression).ToList()
这样,表达式是否以某种方式未被评估?
EDIT2:
问题在于我使用的是Func而不是Epxression。 Func无法转换为SQL,因此它会检索整个数据集,然后对其进行过滤。
答案 0 :(得分:0)
问题在于我使用的是Func而不是Epxression。 Func无法转换为SQL,因此它会检索整个数据集,然后对其进行过滤。
解决方案是:
Dim lExpression As Expression(Of Func(Of MyEntity, Boolean)) = Function(x) x.ParentId = lId
Dim lResults = MyDbContext.MyEntity.Where(lExpression).ToList()