繁体   English   中英

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

[英]Self Tracking Entities with Pre-Generated Views

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

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

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

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

谢谢

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

视图预生成的优点是它接近于免费。 对项目文件稍加摆弄,就可以提高某些操作的性能。 但这并不能使一切变得更快。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM