【问题标题】:EF Code First Migrations for multiple databases多个数据库的 EF Code First 迁移
【发布时间】:2014-10-08 19:43:22
【问题描述】:

我基于此解决方案使用 EF 6 Code First MVC 5 制作了一个项目原型:

EF Code First to create multiple databases dynamically

现在我想知道迁移如何处理多个数据库?

这是否意味着我需要为我拥有的每个数据库运行 Add-Migration MigrationsName?

【问题讨论】:

  • 所有的数据库都会有相同的版本吗?
  • 如果您的意思是相同的架构,是的。
  • 我的意思是,1 个数据库是否可以具有其他数据库的更新版本,例如你只是添加Code列,它需要应用于所有数据库,还是只应用于特定数据库?
  • 对所有人来说,它们都应该是相同的,由同一个应用程序/项目共享

标签: c# asp.net-mvc entity-framework ef-code-first entity-framework-migrations


【解决方案1】:

你刚刚确认所有数据库都需要同时升级,那么你只需要使用一个数据库添加迁移,然后更新到所有数据库。

您可以根据配置中的连接字符串名称指定连接字符串名称参数。

<connectionStrings>
    <add name="CompanyABC"
         connectionString="Data Source=.; Initial Catalog=CompanyABC; Integrated Security = true;" 
         providerName="System.Data.SqlClient" />
    <add name="CompanyDEF"
         connectionString="Data Source=.; Initial Catalog=CompanyDEF; Integrated Security = true;"
         providerName="System.Data.SqlClient" />
    <add name="CompanyXYZ"
         connectionString="Data Source=.; Initial Catalog=CompanyXYZ; Integrated Security = true;"
         providerName="System.Data.SqlClient" />
</connectionStrings>

迁移

PM> Enable-Migrations -ConnectionStringName CompanyABC
PM> Add-Migration UpgradeToVersionX -ConnectionStringName CompanyABC
PM> Update-Database -ConnectionStringName CompanyABC
PM> Update-Database -ConnectionStringName CompanyDEF
PM> Update-Database -ConnectionStringName CompanyXYZ

在运行时运行迁移

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

【讨论】:

  • 谢谢 Yuliam,我忘了提到我将为每个新客户建立一个新数据库。今天我可能有 10 个,明天可能有 10000 个,所以我需要一种自动化的方式来首先使用代码
  • 这仍然有效,只要您将连接字符串作为新数据库传递,迁移文件夹将包含从初始数据库到最新版本的顺序升级,您只需执行它到特定数据库
  • 但这不需要将网络配置中的所有现有数据库作为连接字符串?我将如何控制它,我可以每小时创建一个新数据库。另外,我需要手动运行这个 Update-Database -ConnectionStringName CompanyABC 吗?可能是 Company1 ~ Company10000。我不知道这个过程将如何自动运行
  • 可以传递连接字符串值,-ConnectionString "Data Source=.; Initial Catalog=Company1000; Integrated Security=true" -ConnectionProviderName "System.Data.SqlClient"
  • 不清楚你现在在问什么,你想要自动迁移吗?
猜你喜欢
  • 1970-01-01
  • 2015-04-01
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
相关资源
最近更新 更多