如何查询DbSet以便它返回本地和非本地数据

时间:2015-10-05 19:36:45

标签: .net vb.net entity-framework linq linq-to-entities

我想查询我的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,因此它会检索整个数据集,然后对其进行过滤。

1 个答案:

答案 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()