MVC5 EF6 CodeFirst使用两个数据库进行调试和发布

Sae*_*see 5 c# asp.net-mvc entity-framework entity-framework-6 asp.net-mvc-5

我有一个为我公司提供实习生网站的项目.我在Code First项目中使用MVC5和Entity Framework 6.

这是我公司的内联网,所以我想要两个数据库.1在生产(发布).1在dev(调试)中.

我编辑了Web.config,Web.Debug.config和Web.Release.config这样的文件:

Web.Config中

<connectionStrings>
    <add name="Connexion" connectionString="Data Source=[MYSQLSERVER];Initial Catalog=Intranet;Persist Security Info=True;User ID=[MYUSER];Password=[MYPASS]" providerName="System.Data.SqlClient"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

Web.Debug.Config

<connectionStrings>
    <add name="Connexion" connectionString="Data Source=[MYSQLSERVER];Initial Catalog=Intranet;Persist Security Info=True;User ID=[MYUSER];Password=[MYPASS]" providerName="System.Data.SqlClient"
     xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

Web.Release.config

<connectionStrings>
    <add name="Connexion" connectionString="Data Source=[MYSQLSERVER];Initial Catalog=IntranetRelease;Persist Security Info=True;User ID=[MYUSER];Password=[MYPASS]" providerName="System.Data.SqlClient"
     xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

当我在发布mod中使用Web Deploy部署我的项目时,所有工作都已完成,最终的Web.Config具有良好IntranetRelease的目录价值.

我的问题是我的网站不工作导致数据库IntranetRelease没有从Intranet数据库更新.

我已经制作了一个完美的副本Intranet并手动创建IntranetRelease.它工作,但当人们将使用网站导致所有数据将在IntranetRelease数据库上时,我不能这样做.

我已经尝试在我的项目中进行Add-Migration xxx释放模式,但它没有改变任何东西.

目标是这样的:

当发布内部网正在工作时,我在dev数据库上工作.当我的所有更改都适合发布时,我想部署一个带有Web Deploy的新版本,并使用我的更改do something更新IntranetRelease数据库,而不会丢失任何数据.

感谢您的帮助,抱歉我的英语不好.

TGl*_*zer 0

您可以使用迁移来实现此目的,但您必须了解迁移实际上做了什么。
因此,您有两个数据库开发和发布,其中开发数据库具有当前状态,而发布数据库具有可能比该状态更旧的状态。

您在开发数据库上创建一个迁移,然后在发布数据库上运行代码(我建议不要从网站上执行此操作,因为它需要使用 ddl 命令的权限)。例如,您可以通过运行控制台程序来实现此目的,该程序检查并更新数据库。

那么如何通过一些简单的步骤来做到这一点:

  1. 在您的配置文件中创建一个连接字符串(这将是开发人员数据库)
  2. 在 Release.Config 文件中创建一个 ConncetionString(使用 SlowCheeta,如果 App.Config 这将是生产数据库)
  3. 在 Dev 中创建 DatabaseModel。
  4. 使用 Add-Migration "SomeNameGoesHere" 构建从当前数据库到模型定义数据库的迁移。
  5. 构建 Release 时,EF 将帮助您将 Release-Database 迁移到所需的状态(例如模型定义的状态)。不要将更新数据库用于生产数据库。

使用 Up() 和 Down() 函数在迁移期间保留数据(EF 将检测您是否会丢失数据并发出警告)

要了解有关该主题的更多信息,请访问http://msdn.microsoft.com/en-us/data/jj591621.aspx