问题标签 [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 回答
135 浏览

linq-to-sql - 在 Linq to SQL 中,如何防止已编译的查询重新编译

我正在使用编译查询。正如预期的那样,它们第一次编译需要额外的时间,但是我还注意到它们在大约 30 分钟没有被调用后重新编译。

是否可以控制查询何时重新编译或完全阻止它们重新编译?

仅供参考:我注意到的性能差异的一个示例是,我的一个查询在未编译时需要 6 秒,而在编译时则不到 10 秒,因此如果我可以控制或阻止查询重新编译,将会产生巨大的差异。

任何帮助将不胜感激。

0 投票
1 回答
1387 浏览

asp.net - 实体框架大型查询 - 拆分为已编译的子查询?

我有一个 ASP .NET Web 表单应用程序,它收集信息以最终计算出汽车保险报价的保费。

我有大约 10 个屏幕来填充我们的根 CarRisk 对象,它具有诸如 CarRisk.Proposer、CarRisk.AdditionalDrivers 和 CarRisk.CarRiskehicle 之类的属性。

无论如何,当我进入报价摘要屏幕(总结在前几页中输入的数据)时,我遇到了问题。由于每个驱动程序都可以有索赔/定罪/医疗条件,并且这些条件中的每一个都与 claimType/convictionType 等有另一种关系,因此查询非常大。

我正在设法使用 CompiledQuery 将所有报价屏幕急切加载到摘要中,但是当我到达摘要时,EF 在尝试急切加载 CarRisk 时失败,因为它有 53 个包含。如果我尝试使用编译查询,查询甚至不会编译更不用说运行,它似乎只是导致 IIS 挂起!我有一种感觉,当我上次使用较少的包含(可能是 25 个)执行此操作时,我收到一个关于查询中使用的表过多的 SQL 服务器错误。我尝试将编译查询的结果合并到一个 carRisk 中,但在尝试设置类似 CarRisk.CarRiskVehicle = carRiskCarRiskVehicleCompiledQuery.CarRiskVehicle 的内容时出现错误,但出现错误“EntityCollection 已被初始化。

所以我已经恢复到延迟加载,但是速度慢了很多,而且客户对性能下降感到不满。我试过在 LazyLoading 时关闭 ChangeTracking,但不能说这是一个巨大的改进。

关于我应该做什么的任何建议/想法?

我将向您展示以下包含的内容,以便您查看

ent.CarRisks

0 投票
0 回答
752 浏览

.net - Linq2Sql“成员访问类型不合法”异常

我有一个带有编译查询的静态类,我想重用一些子查询。所以我将一个公共部分提取到一个静态属性中,然后在多个查询中引用它:

这编译得很好,但在运行时我得到

System.InvalidOperationException:“UserAccount”的成员访问“System.String IdentityName”在“System.Linq.IQueryable`1[UserAccount] 类型上不合法。

在这种情况下也不例外

为什么?任何解决方法?

0 投票
4 回答
5887 浏览

c# - LINQ:何时使用编译查询?

我想要一些专家的建议。我以前使用过编译查询,但对于这种特殊情况,我不确定它是否合适。

这是一种搜索表单,其中查询会发生变化,并且取决于正在搜索的内容。

现在,如果有人填写搜索框,我想通过在查询中添加另一个Where语句来扩展查询:

所以我的问题是,它是否返回所有结果 where LocationID == 123,然后检查结果是否searchString匹配?或者它实际上是在扩展已编译的查询?

如果是前者(我怀疑是),是否应该废弃CompiledQuery并创建一个扩展查询的方法,然后将其作为列表返回?

此外,使用的最佳实践是什么CompiledQuery,是否有什么时候应该使用它们的指南?

注意:我在带有Linq to SQL的ASP.NET网站中使用上述内容。不确定这是否有任何区别。

谢谢

0 投票
2 回答
1481 浏览

entity-framework - 删除记录实体框架

我收到一个例外:

无法更新 EntitySet 'Session',因为它有一个 DefiningQuery 并且元素中不存在支持当前操作的元素。

在尝试从数据库表中删除一行时。SaveChanges()调用存在的行时出现异常。下面是我的代码:

0 投票
1 回答
532 浏览

asp.net - Linq 编译查询和性能问题

我遇到了一些 linq 编译查询的性能问题。

我在这里附上了我的整个代码,请检查这是什么问题,它需要很长时间才能响应 20 秒左右。

主要是 foreach 循环耗时超过 17 秒。

请让我知道如何编译此查询。

提前致谢。

0 投票
1 回答
816 浏览

c# - 将 Linq2SQL 简单查询转换为 CompiledQueries 以提高应用程序性能

我正在编写适用于 Windows Phone (SDK 7.1) 的 Silverlight 应用程序,并在LongListSelector适用于 Windows Phone 的 Silverlight 工具包的控件中显示来自 CompactSQL DB 的数据。

一旦列表长到大约 150 个项目,该应用程序真的会减慢加载数据的速度,在页面之间导航和动画无法显示(我知道使用后台线程将有助于释放 UI 线程用于动画)。

我目前有三个经常使用的查询——每次更新 LongListSelector 中的数据或页面为 NavigatedTo 时。我已经转换MoviesByTitle成 a CompiledQuery,这有很大帮助,所以我希望对我的其他两个查询(groupedMoviesLongListSelector.ItemSourcetype List<Group<Movie>>)做同样的事情,但是我似乎无法弄清楚正确的语法。

关于如何使这些查询更有效的任何建议 - 通过使用CompiledQuery或其他方式?

MoviesByTitle在另一个名为Queries

MainPage 中的字段

在 MainPage 的 LoadDB() 方法中 - 在更新 DB 时,在 OnNavigatedTo 和其他几个地方调用此方法。

GroupHeader是数据库中的一个属性Movies和一个实体

班级Group如下

0 投票
1 回答
573 浏览

c# - LINQ to SQL CompiledQuery 变慢

我正在尝试CompiledQuery在 LINQ to SQL(WP7、C# 和 SQLCE 3.5 数据库)中使用 a,但在第一次使用后,查询速度会减慢到未编译的速度。我是新手,我确定我错过了一些明显的东西,但我不确定是什么。

作为上下文,我有一个相当大的术语数据库(大约 100,000 条记录),我想搜索这个数据库。在尝试了各种不同的方法和优化之后,我的查询仍然很慢,因此我考虑使用CompileQuery.

下面是我在 LINQPad 中拼凑的一些代码:

当然,这被过度简化了,但你明白了。现在产生的结果是:

大家说的是第一次查询会比较慢,但是后面的查询会比较快。但是在我的情况下,情况恰恰相反:看起来第一个查询已编译,但后一个查询未编译。

我确定这很明显,但我不确定我错过了什么。任何指针?

提前谢谢了!

0 投票
0 回答
587 浏览

c# - 包含在已编译的查询中

我正在尝试识别和改进 WCF 服务中的一些热点。其中一个查询使用了大量的 Include 语句。SQL server 性能是阳光和棒棒糖,但 EF 性能真的很差。

将这个怪物分解为几个较小的查询已经有很大帮助,将一些查询转换为 CompiledQueries 也为整体执行时间创造了奇迹。

可悲的是,EF 似乎无法正确处理 CompiledQuery 中的 Include 语句,抛出异常说:

编译后的查询看起来像这样:

虽然原始看起来像(并且有效):

有小费吗?

0 投票
1 回答
1908 浏览

c# - 将 Include() 重写为 linq 连接

由于(此时)在编译查询中使用 Include() 是不可能的,我正在尝试将它们重写为连接。但它似乎并不像我想要的那样工作。

说我有这个关系:

现在我用来获取描述如下:

我尝试将其重写为:

但是 OrderState 在我的结果集中仍然为空。我将如何解决这个问题(以编译查询可接受的方式)?