问题标签 [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.
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 不能与我的扩展方法一起使用。互联网上有关该主题的信息几乎不存在。
linq - LINQ CompiledQuery 中的动态顺序 (SQL ORDERBY)
如何在我的 LINQ CompiledQuery 中创建动态 ORDERBY(例如,提供 Order Field 和 Direction 作为编译查询的参数)?
linq - 在 LINQ 编译查询中使用内联表值函数
是否可以创建利用 ITVF(内联表值函数)的 LINQ 编译查询?
linq-to-sql - 如何从编译的 Linq 查询中提取 Sql 命令
在普通(未编译)Linq to Sql 查询中,您可以通过以下代码从 IQueryable 中提取 SQLCommand:
是否可以对已编译的查询执行相同的操作?
以下代码为我提供了一个已编译查询的委托:
当我使用它来生成 IQueryable 并尝试提取 SqlCommand 时,它似乎不起作用。调试代码时,我可以看到返回的 SqlCommand 具有“ SELECT NULL AS [EMPTY] ”的“非常”有用的 CommandText
我在谷歌中找不到任何关于这个特定场景的信息,因为毫无疑问这不是一件常见的事情......
所以....有什么想法吗?
c# - 编译的 LINQ 查询和 DataLoadOptions... 有点扭曲!
我知道这里讨论的方法:
解决高需求 ASP.NET 网站的 Linq to Sql 中编译查询的常见问题
...但这不适用于我的情况,因为我得到了:
“从查询返回结果后,不允许设置加载选项。”
我正在使用 Codesmith PLINQO 脚本生成实体和管理器代码,管理器代码如下所示:
我首先尝试将静态 DataLoadOptions 放入 Searchmanager 类中,如下所示:
...然后将其提供给 GetAll 方法中的上下文,例如:
...这给了我上面提到的错误。这是因为查询已经编译,因此不能添加“额外的”DataLoadOptions?如果是这样,如何在编译查询之前应用 DataLoadOptions?
linq - Linq 编译查询和 int[] 作为参数
我正在使用以下 LINQ to SQL 编译查询。
我知道不可能将序列输入参数用于已编译的查询,并且在运行它时出现“参数不能是序列”错误。
在此处相关的另一篇文章中,我看到有一些解决方案,但我无法理解。
有谁知道使用带有数组的编译查询作为输入参数?
如果你这样做,请发布示例。
c# - 编译后的查询每次都返回相同的东西
我有这个编译的查询:
当我运行一次时,它会返回预期的 Foo 对象。
但是,即使在数据库中设置了该对象的 DeletionDate 之后,它仍然返回相同的对象——我期待 null。(它在回收应用程序池后返回 null,正如预期的那样。)
出于某种原因,当我改用以下编译查询(并传入 DateTime.UtcNow)时,它可以工作,但我不确定为什么。
vb.net - 为什么不能从编译查询返回列表?
我通过使用编译的查询来加速我的应用程序,这些查询一次又一次地受到打击。
我试图这样实现它:
这不起作用,我收到以下错误消息:
但是,当我将编译的查询更改为返回 IQueryable 而不是 List 时,如下所示:
它工作得很好。任何人都可以解释为什么会这样吗?
顺便说一句,编译查询摇滚!他们将我的应用程序加速了 2 倍。
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
c# - 为什么这个 CompiledQuery 没有提高性能?
我正在尝试加快经常使用的查询。使用 aCompiledQuery
似乎是答案。但是当我尝试编译版本时,编译版本和非编译版本在性能上没有区别。
有人可以告诉我为什么 usingQueries.FindTradeByTradeTagCompiled
不比 using 快Queries.FindTradeByTradeTag
吗?