【问题标题】:What changes are needed to move an Entity Framework 4.1 Code First application to production?将 Entity Framework 4.1 Code First 应用程序迁移到生产环境需要哪些更改?
【发布时间】:2011-04-07 17:58:40
【问题描述】:

正如in this thread 所讨论的,Entity Framework Code First 适用于开发环境。那么,需要对 Entity Framework Code First 应用程序进行哪些步骤或更改才能将其移至生产环境?

  1. 将数据库迁移到生产服务器。
  2. 更改 Web.config 中的连接字符串

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

【问题讨论】:

标签: entity-framework ef-code-first entity-framework-4.1


【解决方案1】:

这是一篇关于代码优先方法的精彩文章,包括底部的生产部署:http://msdn.microsoft.com/en-us/magazine/hh126815.aspx

您可以使用Red Gate's SQL Compare 之类的工具来分析您的开发环境和目标环境之间的差异,以构建允许您的 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();
    }


}

这样,您将始终知道哪个版本的代码与数据库相关联。您还可以向 Seed() 方法添加更多代码,以创建开发人员在编写应用程序时需要使用的示例数据。

最后,您不希望在生产环境中使用 DropCreateDatabaseIfModelChanges 初始化程序,因此需要使用 config transform 或一些工厂模式。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    ef-code first 没有真正的技巧。使用从测试到产品的任何 ORM 来移动任何数据库,这与您需要做的事情相同。

    您上面的步骤似乎涵盖了需要完成的 95%(我将保留 5% 以防我忘记了某些事情:))

    【讨论】:

      猜你喜欢
      • 2017-11-16
      • 1970-01-01
      • 2014-09-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 2012-05-15
      相关资源
      最近更新 更多