【发布时间】:2010-01-11 15:16:06
【问题描述】:
我遇到了这个问题:
Custom Methods & Extension Methods cannot be translated into a store expression
基本上我有一些复杂的 LINQ 查询,所以想将它们分解为子查询,这些子查询被实现为返回 IQueryables 的方法。我希望这些 IQueryables 可以在一个 LINQ 语句中组合在一起(我很确定你可以在 LINQ to SQL 中完成)。
问题是如果你尝试这个你会得到(例如):
LINQ to Entities 无法识别 方法 'System.Linq.IQueryable`1[线程] GetThreadsByMostReccentlyPosted(Int32)' 方法,而这种方法不能 翻译成商店表达式。
在我看来,如果您使用 LINQ ORM,那么您需要能够编写 LINQ 查询。否则,必须复制和粘贴任何常见的查询逻辑。
鉴于此限制,我应该如何使用 LINQ to Entities 保持 DRY?
【问题讨论】:
-
所以您真正想知道的是“我如何在 EF 中延迟执行,就像在 L2S 中一样?”。
-
到目前为止我能看到的唯一方法是将我的 IQueryable 转换为 IEnumerable,此时我怀疑你失去了生成最佳 SQL 语句的能力
-
否 - 与延迟执行无关。基本上它不会让我编写包含方法的 linq 语句
标签: linq-to-sql entity-framework linq-to-entities