具有预生成视图的自跟踪实体

时间:2010-06-08 11:52:26

标签: c# .net entity-framework self-tracking-entities

我目前正在使用.NET实体框架的自我跟踪实体,但我想加快执行查询的速度。

每个人似乎都建议在编译时为模型生成视图。

使用ssdl文件等,我能够创建一个'MyModel.Views.cs',它在我的项目中编译。但是我看到这没有什么好处呢?我在这里错过了什么吗?如果我使用自我跟踪实体,我会从中获益吗?

我可以通过实体框架提高性能的其他方法吗? 如何创建预编译视图,但提供参数?例如,搜索查询需要采用各种不同的参数,但可以做得更快!

由于

2 个答案:

答案 0 :(得分:0)

好吧,请记住,预先生成的视图仅对某些操作有帮助。它们有助于实体框架本身构建的查询。例如,如果您在相关属性上执行Load,则会使用预先生成的视图(如果可用)。另一方面,如果您正在进行投影或自定义Where调用,则无法使用预生成的视图,因为它们不代表您的自定义查询。所以这取决于你在做什么。

视图预生成的优势在于它接近免费。稍微摆弄一下你的项目文件,你就可以在某些操作上获得性能提升。但它并没有使一切更快。

答案 1 :(得分:0)

无论您使用何种查询,都始终使用预生成的视图。让我解释一下预先生成的视图。首次查询实体数据模型时,会将其转换为esql视图。这是在运行时和查询模型时按需发生的第一步。创建该视图后,将在应用程序域的生命周期内对其进行高速缓存。然而,生成视图只是一次性成本,就像asp.net网站一样,当有人第一次访问您的网站时,该网站首次点击。您确实为第一个用户节省了时间,但在此之后它确实是相同的体验。只有在模型较大且第一次查询的启动成本较高时,才应考虑预生成视图。一般来说,有很多方法可以提高自我跟踪实体和EF的性能。我的书中有一章涉及提高EF的表现。