gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:51:17 26 4
gpt4 key购买 nike

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

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

我已经像这样编辑了 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>

当我在 Release模式中使用 Web Deploy 部署我的项目时,所有工作都已完成,最终的 Web.Config 对目录具有很好的 IntranetRelease 值(value)。

我的问题是我的网站无法正常工作,因为数据库 IntranetRelease 未从 Intranet 数据库更新。

我已经完美复制了Intranet并手动创建了IntranetRelease。它有效,但当人们使用该网站时我不能这样做,因为所有数据都将在 IntranetRelease 数据库中。

我已经在我的项目中尝试在 Release模式下执行 Add-Migration xxx 但它没有改变任何东西。

目标是这样的:

当发布内部网在工作时,我在开发数据库上工作。当我的所有更改都适合发布时,我想使用 Web Deploy 部署一个新版本并做一些事情以使用我的更改更新IntranetRelease 数据库而不丢失任何数据在上面。

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

最佳答案

您可以为此使用迁移,但您必须了解迁移的实际作用。
因此,您有两个数据库 Dev 和 Release,其中 Dev 数据库具有当前状态,而 release 数据库具有一些可能比当前状态更早的状态。

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

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

  1. 在您的配置文件中创建一个 ConnectionString(这将是开发人员数据库)
  2. 在您的 Release.Config 文件中创建一个 ConncetionString(使用 SlowCheeta,如果 App.Config 这将是生产数据库)
  3. 在 Dev 中创建 DatabaseModel。
  4. 使用添加迁移“SomeNameGoesHere”构建从当前数据库到模型定义的数据库的迁移。
  5. 构建 Release 时,EF 会负责将 Release-Database 迁移到所需的状态(例如模型定义的状态)。不要将更新数据库用于生产数据库。

使用 Up() 和 Down() 函数在迁移期间保留数据(如果您丢失数据,EF 将检测并警告您)

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

关于c# - MVC5 EF6 CodeFirst 使用两个数据库进行调试和发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21377846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com