在我们的一个环境中,我们构建了一个代码生成器,高级用户可以在运行时创建模型并进行部署。无需提及我们正在使用EF 5.0 Code First。
我们的应用程序本身也有许多内部使用的模型。因此dbContext可能最终会拥有至少80个属性和更多(80多个表)。
我们观察到的是,最初的asp.net应用程序加载时间相当高,IIS进程中的内存消耗也很高(600MB +)。
我们可以通过哪些方式配置EF以更加注意性能和内存使用情况?
更新: 似乎是为固定实体进行预编译视图生成的唯一方法。这样我们可以提高性能,因为在我们的项目中固定模型与动态模型的比率为60%到40%
我们如何为Code-First生成每个编译的视图?
更新: 使用EF Power Tools我能够生成视图。现在我想知道我是否可以在同一个项目中拥有两个独立的代码优先上下文。我打算生成视图,因为模型是固定的。第二个模型可以由管理员更改,所以现在我没有简单的方法为它们生成视图。 你认为这可能吗?
答案 0 :(得分:1)
你有一个非常具体的情况 - 考虑到代码生成与代码优先模型的动态特性 - 以及@Ladislav提到的。如果有的话,我不确定有一个“简单的答案”。
通常你可以在(编译前)编译时制作视图 - 例如EF电动工具。那不适合你。
'EdmGen.exe'是实用程序,它可以完成大部分工作,所以自动化可能是一种选择 - 但我没有尝试过,而且鉴于你拥有的东西可能是一个挑战。
T4模板 - 是另一种选择 这是您需要的最佳信息来源 - How to use a T4 template for View Generation
但是我不确定这是否会对你有帮助。问题是它需要首先生成的EDMX模型 - 而这通常是手工完成的。
现在,您可以为此调用一个工具 - 或尝试以某种方式对EDMX模型进行'逆向工程' - 并首先看看它是如何由EF构建的。我不确定,这有点“投机”。
以下是我在EDMX读者/作者上了解的帖子,以及如何使用它。不确定,但可能会扩大你的视野:) EF 4.3 Code First Migrations - Uncompress __MigrationHistory Model
此外,我可以通过metadata
链接更多关于如何从代码访问DbContext
的信息,但我再次确定这对您是否有用,您可能需要所有那个信息'前手'。
你可能需要参与EF源代码,能够理解它是如何工作的,以及如何做到你需要的,如果你还没有。
<小时/> http://blogs.msdn.com/b/adonet/archive/2008/06/20/how-to-use-a-t4-template-for-view-generation.aspx