[英]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.