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

C# 具有预生成视图的自跟踪实体,c#,.net,entity-framework,self-tracking-entities,C#,.net,Entity Framework,Self Tracking Entities,我目前正在使用.NET实体框架的自跟踪实体,但是我希望加快查询的执行速度 每个人似乎建议的第一件事是在编译时为模型生成视图 使用ssdl文件等,我能够创建一个“MyModel.Views.cs”,它在我的项目中编译。然而,我看不到这有什么好处?我是不是遗漏了什么?如果我使用自跟踪实体,我是否没有从中获益 我还可以通过哪些方式提高实体框架的性能? 如何创建预编译视图,但提供参数?例如,一个搜索查询需要采用各种不同的参数,但可能需要更快 谢谢,请记住,预生成的视图只对某些操作有用。它们有助于实体框架

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

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

使用ssdl文件等,我能够创建一个“MyModel.Views.cs”,它在我的项目中编译。然而,我看不到这有什么好处?我是不是遗漏了什么?如果我使用自跟踪实体,我是否没有从中获益

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


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


view pre-generation的优势在于它几乎是免费的。稍微修改一下项目文件,您就可以在某些操作上获得性能提升。但这并不能让一切都变得更快。

无论使用何种查询,都会使用预生成的视图。让我解释一下什么是预生成的视图。第一次查询实体数据模型时,它将转换为esql视图。这是在运行时以及查询模型时根据需要执行的第一步。一旦创建了该视图,它将在应用程序域的生命周期内被缓存。然而,生成视图只需一次性成本,就像asp.net站点一样,当有人第一次访问您的站点时,它会受到第一次攻击。您确实为第一个用户节省了时间,但在这之后,体验就完全一样了。只有在模型较大且第一次查询具有高启动成本时,才应考虑预生成视图。通常有很多方法可以提高自跟踪实体和EF的性能。我的书中有一整章都在谈论如何提高EF的性能。

我明白了,我的印象是,解释我的问题所花的时间会更少,但你所说的是有意义的。谢谢你的时间!