代码首次迁移是否自动在服务器上运行?

时间:2016-11-02 20:23:51

标签: c# .net entity-framework entity-framework-6

我非常熟悉使用Database First方法的Entity Framework以及如何使用它来部署解决方案。

基本上,在我的数据库第一种方法的解决方案中,我有一个Web客户端项目,它使用数据访问库项目,该项目使用数据库第一种方法进行编码。

因此,首先,我编写了一些SQL Server脚本来添加新表(或进行架构更改)。

接下来,转到数据访问库项目,使用EF edmx设计器从现有数据库更新.net,编译此数据访问层,并在客户端Web项目中自动更新DDL引用。

将解决方案部署到生产服务器时:

  1. 首先,我需要在生产SQL服务器上运行t-SQL脚本
  2. 接下来,我在Web服务器上部署了2个更新的DDL(一个用于Web,一个用于数据访问层)。
  3. 现在,我有一个新的应用程序,其中包括一个使用EF Code First方法的Web项目和数据访问层项目。 我是EF代码的第一个新方法。我知道当我更改数据库模式时,例如添加新表,我需要在Visual Studio的包管理控制台中首先运行代码,以便让我的后端数据库实例更改/更新。

    我的问题:

    当我将应用程序部署到生产环境时,我应该遵循哪些步骤?

    如何更新使用EF Code First方法创建的生产SQL Server?

    这是一个自动过程还是我必须像在包管理控制台下的Visual Studio中一样手动运行迁移?

    感谢。

2 个答案:

答案 0 :(得分:5)

如果您使用的是Azure,则可以配置它具有自动过程,如下所示。

enter image description here

否则你必须像这样手动完成:

您必须创建一个db脚本,之后您可以在生产数据库上运行它。

<强> PM&GT; Update-Database -Script

您可以参考此文档:Getting a SQL Script

我使用norrary的另一个选项:

当我需要在生产数据库中运行迁移时,我更改了我的conn字符串以反映生产数据库并在运行之后:

<强> PM&GT;更新数据库

答案 1 :(得分:1)

您有多种迁移选项。

  1. 您可以使用Update-Database -Script(如@Sampath说明)
  2. 生成脚本
  3. 您可以运行Update-Database -ConnectionString =&#34; YourDbString&#34;并且它会针对您的生产数据库进行操作
  4. 您可以使用迁移初始值设定项,在应用启动时,它将使用应用程序连接字符串来运行迁移。通过在初始化例程中添加与此类似的行来执行此操作:

    Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>());
    
  5. 其中Context是您的DbContext类型,Configuration是您进行第一次迁移时生成的配置类。

    有关详细信息,请参阅此MSDN文章:https://msdn.microsoft.com/en-us/data/jj591621.aspx