Linq to Entities无参数构造函数要求破坏了延迟查询的可能性
本文关键字:坏了 延迟 查询 可能性 Entities to 参数 构造函数 Linq | 更新日期: 2023-09-27 18:08:29
所以,互联网一直在告诉我,为了创建一个Linq到实体的查询,返回一堆对象,(元组,例如),查询实际上必须分解为客户端和服务器步骤(Linq到实体和Linq到对象)。让代码更易于维护。例如,
(
from table
select Tuple.Create(a, b)
);
是非法的,必须写成
(
from table
select new {A=a, B=b}
).ToList().Select(row => Tuple.Create(row.A, row.B));
然而,一旦调用ToList(),查询就会运行并完全枚举,从而消除了延迟加载的巨大潜力。我意识到你可以用具有可设置属性的类来规避这一点,但是那些不应该被复制的系统类,或者在构造函数中具有复杂逻辑的自定义类呢?是否有任何简单的方法来绕过这个限制,以便对象的创建可以排队,仅在枚举IQueryable集合时执行?
如果我正在尝试做的事情也表明是一个"糟糕"的设计,请随时告诉我,但如果这至少是可能的,那就更好了。提前感谢!
Tuple是off case,因为它没有可以设置的构造函数或字段。
如果你创建自己的对象,你可以使用字段初始化器:
from table
select new MyTuple() { A = a, B = b };
我不知道,但看起来实体只是不识别函数调用作为创建方法