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集合时执行?

如果我正在尝试做的事情也表明是一个"糟糕"的设计,请随时告诉我,但如果这至少是可能的,那就更好了。提前感谢!

Linq to Entities无参数构造函数要求破坏了延迟查询的可能性

Tuple是off case,因为它没有可以设置的构造函数或字段。

如果你创建自己的对象,你可以使用字段初始化器:

from table
select new MyTuple() { A = a, B = b };

我不知道,但看起来实体只是不识别函数调用作为创建方法