gpt4 book ai didi

linq - 如果您使用实体投影,您会获得 IQueryable 的好处吗?

转载 作者:行者123 更新时间:2023-12-04 18:16:44 25 4
gpt4 key购买 nike

可以说我有这样的方法:

IQueryable<MyFlatObject> GetMyFlatObjects()
{
using (var context = new MyEntities())
{
return context.MyEntities.Select(x => new MyFlatObject()
{
Property1 = x.PropertyA,
Property2 = x.PropertyB,
Property3 = x.PropertyC,
});
}
}

现在,如果我打电话:
MyService.GetMyFlatObjects().Where(x => x.Property1 == "test");

完整性检查。此过滤器不会传播到我的数据库存储区(就像我刚刚查询了我的实体一样),而是我将取回所有结果并使用 LINQ-to-objects 进行过滤。正确的?

最佳答案

我想,这是不对的。首先,它不查询任何内容,因为您只是在扩展 IQueryable<T>到一个新的IQueryable<T> .如果您调用ToList()或者任何其他导致查询执行的东西,你都会得到一个异常,因为上下文已经在 using 的末尾被释放了。堵塞。如果您不处置上下文 Where过滤器将被翻译成 SQL 并在数据库中执行。我相信它的行为方式与您应用 Where 的方式相同。至PropertyASelect 之前.

关于linq - 如果您使用实体投影,您会获得 IQueryable 的好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11513271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com