在我们的一个环境中,我们已经构建了一个代码生成器,强大的用户可以在运行时创建模型并进行部署。无需提及,我们首先使用的是EF 5.0代码。
我们的应用程序本身也有许多内部使用的模型。因此,dbContext可能最终至少有80个属性和更多属性(80+表)。
我们观察到的是,初始的asp.net应用程序加载时间相当长,而且IIS中的内存消耗也很高(600MB+)。
有哪些方法可以配置EF,使其在性能和内存使用方面更加谨慎?
更新:似乎是为固定实体进行预编译视图生成的唯一方法。这样我们就可以提高性能,因为在我们的项目中,固定模型和动态模型的比率是60% ~ 40%。
我们如何为代码优先生成按编译的视图?
更新:使用EF电动工具,我能够生成视图。现在,我想知道是否可以在同一个项目中有两个单独的代码-第一上下文。首先,我打算生成视图,因为模型是固定的。第二个模型可以由管理员更改,因此目前我没有为它们生成视图的简单方法。你觉得这有可能吗?
发布于 2013-04-11 17:32:50
您有一个非常特殊的情况--考虑到您的代码的动态特性-gen vs代码优先模型-and,正如@Ladislav所提到的。我不确定是否有“简单的答案”(如果有的话)。
通常,您可以在编译时(预)进行视图-例如EF电动工具。这对你不管用。
'EdmGen.exe‘是实现大部分功能的实用工具,因此自动化可能是一种选择--但我没有尝试过,考虑到您的情况,这可能是一个挑战。
T4模板-是另一个选项。
这是您所需信息的最佳来源- 如何使用T4模板生成视图
,但是,我不确定这是否对你也有帮助。问题是,它首先需要生成EDMX模型--这通常是手工完成的。
现在,您可以为此调用一个工具--或者尝试以某种方式“反向工程”EDMX模型--看看EF最初是如何构造的。我不确定,这有点“投机”。
这是我在EDMX /writer上所知道的关于的文章,以及如何使用它。不确定,但可能会扩大你的视野:)
此外,我还可以链接到更多关于如何通过DbContext从代码中访问DbContext的信息,但我也不确定这对您是否有用,您可能需要所有这些信息。
你可能需要参与EF的源代码,以便能够跟踪和理解它是如何工作的,以及如何做您需要的,如果你还没有。
http://blogs.msdn.com/b/adonet/archive/2008/06/20/how-to-use-a-t4-template-for-view-generation.aspx
http://edmxdom.codeplex.com/ (EF 6,但它重叠,您也可以找到EF5)
https://stackoverflow.com/questions/15615542
复制相似问题