问题标签 [compiled-query]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2195 浏览

c# - LINQ-to-SQL 编译查询问题(作为未编译查询工作)

我有 C# 扩展方法IQueryable,例如FindNewCustomers()等等FindCustomersRegisteredAfter(int year),我使用这些方法将 LINQ to SQL 的查询“链接”在一起。

现在我的问题:我想创建编译查询,例如:

FindCustomersRegisteredAfter(int year)方法是一个扩展方法,采用IQueryable并返回相同的值。该OrderBy方法也是一种扩展方法 (System.Linq.Dynamic),它基于字符串创建动态表达式(例如,“FirstName ASC”将对字段 FirstName 升序排序)。Skip并且Take是内置方法。

以上(不是编译查询,而是常规查询)完美运行。将其放入已编译的查询中后,我遇到了以下错误:

方法 'System.Linq.IQueryable`1[Domain.Customer] FindCustomersRegisteredAfter[Customer](System.Linq.IQueryable`1[Domain.Customer], Int32)' 不支持对 SQL 的转换。

再一次,如果查询是非编译的,这只是一个常规的 LINQ 查询。只有在 CompiledQuery.Compile() 中出现错误时才会出现该错误。

帮助??!

编辑:如果我通过 var query = (...) 以与 CompiledQuery.Compile 内部相同的方式创建查询,则生成的 SQL 如下:

所以你看到 SQL 都是完全可翻译的,所以我只需要填写@p0、@p1 和@p2 就可以重复工作!CompiledQuery.Compile 有什么问题?!?

更新:我知道 OrderBy 不能工作(因为它不是 @p 参数)。我仍在试图弄清楚为什么 CompiledQuery.Compile 不能与我的扩展方法一起使用。互联网上有关该主题的信息几乎不存在。

0 投票
2 回答
1341 浏览

linq - LINQ CompiledQuery 中的动态顺序 (SQL ORDERBY)

如何在我的 LINQ CompiledQuery 中创建动态 ORDERBY(例如,提供 Order Field 和 Direction 作为编译查询的参数)?

0 投票
0 回答
820 浏览

linq - 在 LINQ 编译查询中使用内联表值函数

是否可以创建利用 ITVF(内联表值函数)的 LINQ 编译查询?

0 投票
2 回答
1547 浏览

linq-to-sql - 如何从编译的 Linq 查询中提取 Sql 命令

在普通(未编译)Linq to Sql 查询中,您可以通过以下代码从 IQueryable 中提取 SQLCommand:

是否可以对已编译的查询执行相同的操作?

以下代码为我提供了一个已编译查询的委托:

当我使用它来生成 IQueryable 并尝试提取 SqlCommand 时,它似乎不起作用。调试代码时,我可以看到返回的 SqlCommand 具有“ SELECT NULL AS [EMPTY] ”的“非常”有用的 CommandText

我在谷歌中找不到任何关于这个特定场景的信息,因为毫无疑问这不是一件常见的事情......

所以....有什么想法吗?

0 投票
4 回答
2738 浏览

c# - 编译的 LINQ 查询和 DataLoadOptions... 有点扭曲!

我知道这里讨论的方法:

解决高需求 ASP.NET 网站的 Linq to Sql 中编译查询的常见问题

...但这不适用于我的情况,因为我得到了:

“从查询返回结果后,不允许设置加载选项。”

我正在使用 Codesmith PLINQO 脚本生成实体和管理器代码,管理器代码如下所示:

我首先尝试将静态 DataLoadOptions 放入 Searchmanager 类中,如下所示:

...然后将其提供给 GetAll 方法中的上下文,例如:

...这给了我上面提到的错误。这是因为查询已经编译,因此不能添加“额外的”DataLoadOptions?如果是这样,如何在编译查询之前应用 DataLoadOptions?

0 投票
2 回答
2851 浏览

linq - Linq 编译查询和 int[] 作为参数

我正在使用以下 LINQ to SQL 编译查询。

我知道不可能将序列输入参数用于已编译的查询,并且在运行它时出现“参数不能是序列”错误

在此处相关的另一篇文章中,我看到有一些解决方案,但我无法理解。

有谁知道使用带有数组的编译查询作为输入参数?

如果你这样做,请发布示例。

0 投票
1 回答
641 浏览

c# - 编译后的查询每次都返回相同的东西

我有这个编译的查询:

当我运行一次时,它会返回预期的 Foo 对象。

但是,即使在数据库中设置了该对象的 DeletionDate 之后,它仍然返回相同的对象——我期待 null。(它在回收应用程序池后返回 null,正如预期的那样。)

出于某种原因,当我改用以下编译查询(并传入 DateTime.UtcNow)时,它可以工作,但我不确定为什么。

0 投票
1 回答
873 浏览

vb.net - 为什么不能从编译查询返回列表?

我通过使用编译的查询来加速我的应用程序,这些查询一次又一次地受到打击。

我试图这样实现它:

这不起作用,我收到以下错误消息:

但是,当我将编译的查询更改为返回 IQueryable 而不是 List 时,如下所示:

它工作得很好。任何人都可以解释为什么会这样吗?

顺便说一句,编译查询摇滚!他们将我的应用程序加速了 2 倍。

0 投票
1 回答
1930 浏览

linq-to-sql - Linq-to-sql 编译查询返回不属于提交的 DataContext 的对象?

编译查询:

看起来编译的查询正在从另一个数据上下文返回结果

如果我运行其他(复杂)单元测试,我会得到预期的结果: 尝试附加或添加一个不是新的实体,可能是从另一个 DataContext 加载的。

另一个重要信息是该测试在 TransactionScope 下(但即使没有事务,问题也会出现。)!

我正在使用使用 XML 与 DB 映射的 POCO。

更新: 看起来下一个链接描述了类似的问题(这个错误解决了吗?): http ://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/9bcffc2d-794e-4c4a-9e3e-cdc89dad0e38

0 投票
4 回答
2305 浏览

c# - 为什么这个 CompiledQuery 没有提高性能?

我正在尝试加快经常使用的查询。使用 aCompiledQuery似乎是答案。但是当我尝试编译版本时,编译版本和非编译版本在性能上没有区别。

有人可以告诉我为什么 usingQueries.FindTradeByTradeTagCompiled不比 using 快Queries.FindTradeByTradeTag吗?