1

我目前正在使用 .NET Entity Framework 的 Self Tracking 实体,但是我想加快查询的执行速度。

每个人似乎都建议的第一件事是在编译时为模型生成视图。

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

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

谢谢

4

2 回答 2

0

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

视图预生成的优点是它接近免费。稍微摆弄一下您的项目文件,您会在某些操作上获得性能提升。但这并不能使一切变得更快。

于 2010-06-08T12:34:53.347 回答
0

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

于 2010-07-07T14:53:41.433 回答