问题标签 [linq.compiledquery]

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 回答
4566 浏览

linq-to-sql - 已编译的查询和“参数不能是序列”

我认为编译后的查询将执行与 DataContext 相同的查询翻译。然而,当我尝试使用带有 .Contains 方法调用的查询时,我遇到了运行时错误。我哪里出错了?

0 投票
1 回答
443 浏览

asp.net - 编译查询是否缓存?

我的大部分应用程序都使用经过编译的查询来检索数据。在这些查询中,我经常提到当前用户。我注意到如果用户 B 在另一个用户 A 之后登录,那么用户 B 将看到用户 A 的信息。

我在整个应用程序中都有类似的查询

User.Current是一个静态属性,根据登录者的不同而变化。

当我第一次使用用户 A 登录时,上面编译的查询返回用户 A 的记录。因此,User.Current 也返回了对用户 A 的正确引用。但是,当我以用户 B 身份登录时,上面编译的查询仍然返回用户 A 的记录,尽管 User.Current 正在返回对用户 B 的引用。

我为 SQL Server 运行了 Profiler,并注意到当编译的查询被执行时,生成的 TSQL 两次都引用了用户 A 的 ID。

所以我的问题是:

编译后的查询会以某种方式缓存吗?

如果是这样,寿命是多少,我可以控制它吗?

在 ASP.net 应用程序的已编译查询设计中引用“当前用户”是否错误?

谢谢大家!

0 投票
1 回答
147 浏览

linq - 有必要以亚音速编译 linq 查询吗?

我想知道是否有必要将 linq 查询编译到亚音速实体?

例如,我需要编译以下 linq 查询吗?

0 投票
1 回答
436 浏览

.net - 管道和过滤器以及 CompiledQuery.Compile

我已经开始使用 linq to sql 和实体框架,发现开发体验还不错。就像您可以将查询分开并组合不同查询的方式非常好 - 请参阅管道和过滤器。

但是我发现的问题是,如果我使用已编译的查询,性能可以大大提高(在我的情况下,我不能忽略大约 4 倍)。但是我发现编译查询的问题是他们不喜欢使用 IQueryable...

有人对我如何克服这个缺点有任何想法吗???我的工作方式是编译查询只是引用了其他使用 IQueryable 的查询,这样我就可以切换使用或不使用编译查询。但正如我发现的那样,这不太好用。

有任何想法吗?

干杯安东尼

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 投票
1 回答
1194 浏览

entity-framework - 过滤列表作为编译查询中的参数

我有以下已编译查询,我想返回一个“组”列表,这些“组”没有包含在过滤列表中的“GroupID”:

但是我收到以下运行时错误:

'System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c261364e126]]' 类型的指定参数 'categories' 无效。仅支持标量参数(例如 Int32、Decimal 和 Guid)。

有任何想法吗?

0 投票
1 回答
433 浏览

c# - 如何使用委托通过名称获取 CompiledQuery

我正在尝试查找并运行给定名称的 CompiledQuery。如何按名称访问已编译的查询,然后如何调用委托?

这是我所能得到的-我收到错误“错误绑定到目标方法”

// 其他编译查询省略,但结果是实现通用接口 IProjectObject 的 IQueryable 对象

0 投票
2 回答
2185 浏览

linq-to-sql - LINQ-to-SQL“成员访问在类型上不合法”异常与联合和编译查询

我有多个要联合在一起的查询,然后编译整个事情。未编译的查询运行良好,但“InvalidOperationException:'UserQuery+Foo' 的成员访问 'Int32 Id' 在类型 'System.Linq.IQueryable`1[UserQuery+Foo] 上不合法。” 编译和运行相同的查询时会引发异常。

我该如何解决?

编辑

看起来联合和分组无关紧要。从查询中删除这些元素在编译时仍然会导致异常:

将调用替换为GetA(dc)withdc.GetTable<Bar>()并添加 where 子句可解决问题。

那么,对于已编译的查询,像这样将单独的查询连接在一起是不可能的吗?

编辑#2

詹姆斯的回答一针见血。简化查询进一步揭示了根本问题:

此查询抛出NotSupportedException: Method 'System.Linq.IQueryable``1[UserQuery+Foo] GetA(System.Data.Linq.DataContext)' has no supported translation to SQL.

将对 GetA 的调用拉到单独的变量赋值中,然后在查询中使用该变量会引发InvalidOperationException: Sequence contains more than one element异常。

0 投票
3 回答
173 浏览

performance - 将附加子句应用于已编译的查询会导致重新编译吗?

如果我通过 CompiledQuery.Compile 进行编译实体查询,然后添加另一个 .Where() 子句或 .OrderBy() 子句,这些附加子句会强制完全重新编译、部分重新编译还是不重新编译?

0 投票
3 回答
2348 浏览

linq-to-sql - .NET 4 的 DataContext 编译查询问题

我的项目(UI 层是 asp.mvc)是使用 .NET 3.5 开发的。升级到 .NET 4.0 后,我遇到了编译查询的问题:

每次运行查询时,我都会传递上下文

错误发生在第二个请求上。