2016-11-02 33 views
3

我对使用数据库优先方法的实体框架以及如何使用它部署解决方案非常熟悉。代码第一次迁移是否自动在服务器上运行?

基本上,在我使用数据库优先方法的解决方案中,我有一个Web客户端项目,它使用数据库访问库项目,该项目使用数据库优先方法进行编码。因此,我首先编写一些SQL Server脚本来添加新表(或进行模式更改)。

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

当我解决方案部署到生产服务器:

  1. 首先,我需要运行生产SQL服务器
  2. 接下来在T-SQL脚本,我部署2周更新的DDL(一个对于网络和1对于数据访问层)在Web服务器上。

现在,我有一个新的应用程序,其中包含一个Web项目和一个使用EF Code First方法的数据访问层项目。 我是EF代码第一种方法的新手。我知道每次更改数据库模式时(例如添加新表),我都需要在Visual Studio的包管理控制台中运行代码优先迁移,以便让我的后端数据库实例更改/更新。

我的问题:

当我将应用程序部署到生产,什么是我应该遵循哪些步骤?

如何使用EF Code First方法更新生产SQL服务器?

这是一个自动过程,还是我必须像在Visual Studio下在Package Management Console下手动运行迁移一样?

谢谢。

回答

5

如果您使用的是Azure,那么您可以将其配置为具有自动过程,如下所示。

enter image description here

否则,您必须手动做这样的:

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

PM>更新,数据库-Script

你可以参考这个文档:Getting a SQL Script

,我normaley使用另一种选择:

当我需要运行aginst生产迁移db,我更改我的conn字符串以反映生产数据库,然后运行:

PM>更新 - 数据库

+0

不知道Azure的选项;这很酷。还有其他自动方式。 – BradleyDotNET

+0

是的,如果你使用的是Azure,你可以轻松完成:)@BradleyDotNET – Sampath

+0

嗨Sampath。非常感谢你的回答。看起来,当我将应用程序部署到生产服务器时,我必须在VS中运行迁移代码,并将数据库连接字符串更改为生产。 –

1

您有几个迁移选项。

  1. 可以使用更新的数据库的-Script(如@Sampath注释)生成一个脚本
  2. 您可以运行更新,数据库-ConnectionString =“YourDbString”,它会做到这一点对生产数据库为您
  3. 您可以使用迁移初始化程序,并在应用程序启动时使用应用程序连接字符串运行迁移。通过将一个类似的线在你的初始化程序做到这一点:

    Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>()); 
    

哪里Context是你的DbContext类型,Configuration是当你所做的第一次迁移产生的配置类。

更多信息请参阅本MSDN文章:https://msdn.microsoft.com/en-us/data/jj591621.aspx

+0

你的第三个选择的问题是,我们是否需要每次更改'conn'?我的意思是'dev'到'prod'? – Sampath

+0

@Sampath是和否,你应该改变连接字符串*已经*因此生产应用程序与生产数据库交谈,并通过这样做初始化器将工作。 – BradleyDotNET

+0

Fourth =>您可以提供一个dacpac:D DBA,就像那个解决方案 – CodeNotFound

相关问题