如何在 EF4.0 中创建预生成视图





0/5 (0投票)
如何提高 EF 的性能
引言
如果您正在使用 Entity Framework (EF),那么您需要了解 EF 中查询的执行方式,否则您将面临性能问题。
为了更好地理解 Entity Framework 中查询的性能,了解查询针对概念模型执行并返回数据作为对象时发生的操作很有帮助。
预生成视图
这是最耗费操作(占用初始查询超过 50% 的时间)——视图生成。在 Entity Framework 可以针对概念模型执行查询或将更改保存到数据源之前,它必须生成一组本地查询视图来访问数据库。这些视图是元数据的一部分,并按应用程序域缓存。如果您在同一个应用程序域中创建多个对象上下文实例,它们将重用缓存元数据中的视图,而不是重新生成它们。由于视图生成是执行单个查询的总体成本的重要组成部分,因此 Entity Framework 允许您预生成这些视图并将它们包含在编译的项目中。预生成视图会在运行时进行验证,以确保它们与当前版本的模型和映射文件一致。
在我们的应用程序中实现预生成视图有三个步骤?
步骤 1选择您的 EDMX 的“优先级”窗口,并将“元数据工件处理”更改为“复制到输出目录”。然后构建项目。
步骤 2:将视图添加到项目中1. 转到解决方案资源管理器,右键单击项目。2. 选择“项目属性”。在“属性”页面中,选择“构建事件”选项卡。3. 将以下代码粘贴到“预构建事件命令行”中,并删除换行符。
"%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:CSharp /mode:ViewGeneration "/inssdl:$(TargetDir)Corecon.ssdl" "/incsdl:$(TargetDir) Corecon.csdl" "/inmsl:$(TargetDir) Corecon.msl" "/outviews:$(ProjectDir) Corecon.Views.cs"
现在构建项目。这将生成视图文件 Corecon.View.cs。在解决方案资源管理器中,右键单击项目名称,然后选择“添加现有项”。“添加现有项”对话框将出现。导航到项目的根文件夹,然后选择 Corecon.View.cs 文件。单击“添加”。现在构建解决方案。
步骤 3对于 ASP.NET 项目,重新添加映射和模型文件作为嵌入式资源。1. 在“项目”菜单上,单击“添加现有项”。2. 浏览到项目的输出目录,选择 Corecon.csdl,然后单击“确定”。3. 在解决方案资源管理器中,选择添加的文件。4. 在“属性”中,将“生成操作”设置为“嵌入式资源”。5. 对 Corecon.ssdl 文件和 Corecon.msl 文件重复步骤 1 到 3。6. 在解决方案资源管理器中,双击 App.config 文件,然后根据以下格式之一修改连接字符串属性中的“Metadata”参数。
Metadata=res://<assemblyFullName>/<resourceName>; Metadata=res://*/<resourceName>; Metadata=res://*;
更多详情
http://stackdotnet.blogspot.com/2011/10/how-increase-performance-of-entity.html[^]