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>
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>
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>
当我在发布mod中使用Web Deploy部署我的项目时,所有工作都已完成,最终的Web.Config具有良好IntranetRelease的目录价值.
我的问题是我的网站不工作导致数据库IntranetRelease没有从Intranet数据库更新.
我已经制作了一个完美的副本Intranet并手动创建IntranetRelease.它工作,但当人们将使用网站导致所有数据将在IntranetRelease数据库上时,我不能这样做.
我已经尝试在我的项目中进行Add-Migration xxx释放模式,但它没有改变任何东西.
目标是这样的:
当发布内部网正在工作时,我在dev数据库上工作.当我的所有更改都适合发布时,我想部署一个带有Web Deploy的新版本,并使用我的更改do something更新IntranetRelease数据库,而不会丢失任何数据.
感谢您的帮助,抱歉我的英语不好.
您可以使用迁移来实现此目的,但您必须了解迁移实际上做了什么。
因此,您有两个数据库开发和发布,其中开发数据库具有当前状态,而发布数据库具有可能比该状态更旧的状态。
您在开发数据库上创建一个迁移,然后在发布数据库上运行代码(我建议不要从网站上执行此操作,因为它需要使用 ddl 命令的权限)。例如,您可以通过运行控制台程序来实现此目的,该程序检查并更新数据库。
那么如何通过一些简单的步骤来做到这一点:
使用 Up() 和 Down() 函数在迁移期间保留数据(EF 将检测您是否会丢失数据并发出警告)
要了解有关该主题的更多信息,请访问http://msdn.microsoft.com/en-us/data/jj591621.aspx