Asp.net mvc 实体框架5-代码优先生产准备

Asp.net mvc 实体框架5-代码优先生产准备,asp.net-mvc,entity-framework,production-environment,Asp.net Mvc,Entity Framework,Production Environment,作为我们打算从Linq2Sql迁移到实体框架的一部分,我们创建了一个由十个实体组成的小型EF模型。因为我们使用的是遗留应用程序,所以我们使用“代码优先”选项并手动将POCO对象映射到数据库中的表我们不希望实体框架代码更新数据库。我相信以下是实现这一点所需的全部操作-我希望得到确认,因为我不确定SetInitializer代码是否应该放在这里,或者放在Global.asax代码中 protected override void OnModelCreating(DbModelBuilder mode

作为我们打算从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());
    ...
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
Database.SetInitializer(null);
modelBuilder.Configurations.Add(newsubscribers.Mapping.DataSourceMap());
modelBuilder.Configurations.Add(newsubscribers.Mapping.SubscriberMap());
...
}
作为此次更新的一部分,我们创建了一个小测试页面(MVC控制器和视图),并将其添加到主应用程序项目中。在开发和测试过程中,这一点非常有效。我们注意到的唯一一件事是,如果我们更新了底层的EF模型,初始页面加载似乎需要几分钟的时间来呈现。我认为这是因为EF必须重建它的视图和映射来反映变化——让我感到耻辱的是,我并不太担心这一点,因为a)我不完全了解这是如何工作的,b)这似乎只发生在模型变化上

今天早上,我们将此更新加载到生产服务器进行初始测试,这一次,初始负载问题变得更加严重——事实上,测试页面从未加载

所以,要回答我的问题:

  • 还有什么我应该/不应该做的来准备我的工作吗 生产申请
  • 如何提高初始负载性能
  • 如何找出生产服务器上的初始负载 从不完成-我没有看到任何错误消息
  • 我确实尝试过下载Entity Framework Power Tools并在派生的DbContext类上运行“Generate Views”选项,但由于我只能在开发环境中运行此选项,因此我不确定复制到生产服务器时是否可以运行—它似乎无法运行

    我应该提到,开发环境在主表中只包含100条记录,而生产环境包含近100万条记录(相同的模式),同样,我不确定这是否会产生任何影响

    如有任何帮助建议,将不胜感激


    谢谢。

    首先,如果您使用的是现有数据库,那么更好的方法是模型优先。您可以将Edmx连接到当前数据库,它将收集当前所需的所有映射。然后还生成POCO类和DbContext(对于EF5,您必须在power tools generate views中手动执行此操作,并在项目中创建一个类,因此,只要它是部署到生产环境中的应用程序的编译部分,它就应该能够帮助EF的冷启动加载时间。是的,我创建了视图,然后重新部署了应用程序-没有比FTP副本更复杂的了。确实如此似乎无法解决问题。我们首先研究了这个问题,但我们决定将模型从底层数据存储中完全分离出来-因此采用代码优先的方法。虽然我理解这可能会解决问题,但我不愿意相信代码优先的模型不能支持仅10 e的非常简单的模型数量级(无论如何在这个阶段).据我所知,开发和生产之间的唯一区别是数据库中记录的数量-这会影响EF启动性能吗?模型优先和代码优先之间的唯一区别是如何创建模型。在这两种情况下,都会创建模型,但使用模型优先直接创建(从而节省初始化时间)在“代码优先”中,它是在运行时完成的。在“代码优先”中,没有什么是“模型优先”无法做到的。不,记录的数量应该不会有什么区别,因为模型检查的是模式,而不是记录。我会尝试一种模型方法,从数据库中更新一个空白模型需要几秒钟的时间,看看这是否有帮助。如sugges所说ted从现有数据库创建了模型。不幸的是,我似乎遇到了与以前相同的问题。该应用程序在本地开发web服务器上运行良好,但在生产服务器上挂起(或至少已锁定30分钟)。我没有看到任何错误(在网站或事件日志中),但如果我查看任务管理器,我可以看到网站的w3wp.exe进程正在不断增加其内存使用量。我只能假设该问题对于模型优先和代码优先都是常见的。任何建议都将不胜感激。我的猜测是,我正在做一些事情,或者没有做一些事情,在生产安装中很愚蠢-bu我不知道该去哪里找。30分钟结束后,应用程序是否正常工作?是否有种子植入?听起来像是在做一个非常复杂的查询或类似的事情,比如对一个有几百万条记录的表进行连接。您是否可以找出问题出在哪里?或者将生产数据库的备份带到d中ev,然后调试以查看挂起的位置。