Entity framework 将Entity Framework 4.1代码优先应用程序移至生产环境需要进行哪些更改?

Entity framework 将Entity Framework 4.1代码优先应用程序移至生产环境需要进行哪些更改?,entity-framework,ef-code-first,entity-framework-4.1,Entity Framework,Ef Code First,Entity Framework 4.1,如前所述,实体框架代码首先适用于开发环境。那么,需要对实体框架代码第一个应用程序执行哪些步骤或更改才能将其转移到生产环境中呢 将数据库迁移到生产服务器 在Web.config中更改连接字符串 需要对DbContext初始化进行任何更改以防止它在生产环境中胡闹吗?(或者,由于数据库模式在迁移的数据库中是正确的,所以它不会出问题吗?)还有什么要做的吗?首先,ef代码没有什么特别的技巧。这与使用任何ORM将任何DB从测试移动到产品所需的操作相同 您上面的步骤似乎涵盖了需要完成的95%(我留下5%的空白

如前所述,实体框架代码首先适用于开发环境。那么,需要对实体框架代码第一个应用程序执行哪些步骤或更改才能将其转移到生产环境中呢

  • 将数据库迁移到生产服务器
  • 在Web.config中更改连接字符串

  • 需要对DbContext初始化进行任何更改以防止它在生产环境中胡闹吗?(或者,由于数据库模式在迁移的数据库中是正确的,所以它不会出问题吗?)还有什么要做的吗?

    首先,ef代码没有什么特别的技巧。这与使用任何ORM将任何DB从测试移动到产品所需的操作相同


    您上面的步骤似乎涵盖了需要完成的95%(我留下5%的空白,以防我忘记了什么:)

    这是一篇关于代码优先方法的好文章,包括底部的生产部署:

    您可以使用诸如的工具来分析您的开发环境和目标环境之间的差异,以构建允许DBA执行迁移的更改脚本

    您可能要做的另一件事是将名为“AppVersion”的实体添加到代码优先上下文中。然后,重写DropCreateDatabaseIfModelChanges IDatabaseInitializer的Seed()方法,以便它使用连续生成写入当前应用程序版本,或者可能写入源代码管理修订号

    例如:

    public class OrderDbInitializer : DropCreateDatabaseIfModelChanges<OrderContext>
    {
        protected override void Seed(OrderContext context)
        {
    
            context.AppVersion.Add(new AppVersion() {Version = Assembly.GetExecutingAssembly().GetName().Version.ToString()});
            context.SaveChanges();
        }
    
    
    }
    
    公共类OrderDbInitializer:DropCreateDatabaseIfModelChanges { 受保护的覆盖无效种子(OrderContext上下文) { context.AppVersion.Add(新的AppVersion(){Version=Assembly.getExecutionGassembly().GetName().Version.ToString()}); SaveChanges(); } } 这样,您将始终知道与数据库关联的代码版本。您还可以向Seed()方法添加更多代码,以创建开发人员在编写应用程序时需要使用的示例数据

    最后,您不希望在生产中使用DropCreateDatabaseIfModelChanges初始值设定项,因此需要使用一个或一些工厂模式

    希望这能给你一些想法。

    检查这个问题:有一些非常好的想法。