作为我们打算从 Linq2Sql 迁移到实体框架的一部分,我们创建了一个由十个实体组成的小型 EF 模型。因为我们使用的是遗留应用程序,所以我们使用“代码优先”选项并将我们的 POCO 对象手动映射到数据库中的表。 我们不希望实体框架代码更新数据库。 我相信以下是实现这一目标所需要做的全部 - 我希望得到确认,因为我不确定 SetInitializer 代码是否应该放在此处或是否应该放在 Global.asax 代码中。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<InboxDataContext>(null);
modelBuilder.Configurations.Add(new Subscribers.Mapping.DataSourceMap());
modelBuilder.Configurations.Add(new Subscribers.Mapping.SubscriberMap());
...
}
作为此次更新的一部分,我们创建了一个小型测试页面(MVC 控制器和视图)并将其添加到我们的主应用程序项目中。在开发和测试期间,这运行良好。我们唯一注意到的是,如果我们更新了底层 EF 模型,初始页面加载似乎需要几分钟才能呈现。我认为这是因为 EF 必须重建其视图和映射以反映更改 - 让我感到耻辱的是,我并没有太担心这一点,因为 a)我不完全了解它的工作原理和 b)它似乎只发生在模型更改上。
今天早上,我们将此更新加载到生产服务器进行初始测试,这一次初始加载问题变得更糟 - 事实上测试页面从未加载过。
所以,要回答我的问题:
- 还有什么我应该/不应该做的事情来准备我的生产申请吗?
- 如何提高初始加载性能?
- 如何找出为什么生产服务器上的初始加载永远不会完成 - 我没有看到任何错误消息?
我确实尝试下载 Entity Framework Power Tools 并在派生的 DbContext 类上运行“生成视图”选项,但由于我只能在开发环境中运行它,所以我不确定它在复制到生产服务器时是否有效 - 它似乎没有。
我应该提到,开发环境在主表中仅包含一百条记录,而生产环境包含近一百万条记录(相同的模式),我再次不确定这是否会有所不同。
任何帮助建议将不胜感激。
谢谢。