1

在我们的一个环境中,我们构建了一个代码生成器,高级用户可以在其中创建模型并在运行时进行部署。无需提及我们使用的是 EF 5.0 Code First。

我们的应用程序本身也有许多在内部使用的模型。所以 dbContext 最终可能至少有 80 个属性和更多(80 多个表)。

我们观察到的是初始 asp.net 应用程序加载时间相当长,并且 IIS 进程中的内存消耗也很高(600MB+)。

我们可以通过哪些方式将 EF 配置为更加注意性能和内存使用?

更新:似乎是为固定实体进行预编译视图生成的唯一方法。这样我们可以提高性能,因为在我们的项目中,固定模型与动态模型的比例为 60% 到 40%

我们如何为 Code-First 生成按编译的视图?

更新:使用 EF Power Tools 我能够生成视图。现在我想知道我是否可以在同一个项目中有两个单独的代码优先上下文。一方面,我打算生成视图,因为模型是固定的。第二个模型可以由管理员更改,所以现在我没有简单的方法为它们生成视图。你认为这可能吗?

4

1 回答 1

1

你有一个非常具体的情况——考虑到你的代码生成与代码优先模型的动态特性——正如@Ladislav 提到的那样。我不确定是否有一个“简单的答案”。

通常,您可以在(预)编译时创建视图 - 例如 EF Power Tools。那对你不起作用。

“EdmGen.exe”是完成大部分工作的实用程序,因此以某种方式自动化可能是一种选择 - 但我没有尝试过,考虑到你所拥有的,这可能是一个挑战。

T4 模板 - 是另一种选择
这是您所需的最佳信息来源 - 如何使用 T4 模板生成视图

但是,我不确定这是否会对您有所帮助。问题是它首先需要生成 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
EF 4.3 代码优先迁移 - 解压缩 __MigrationHistory 模型
http://edmxdom.codeplex.com/(EF 6 但它重叠,你也可以找到 EF5)

于 2013-04-11T17:32:50.867 回答