实体框架6用于隔离多租户设置的数据库迁移

时间:2013-12-04 03:33:42

标签: c# asp.net multi-tenant entity-framework-6

我理解数据库迁移可能不是部署此解决方案的最佳方法,因此非常感谢任何建议。

我有x个相同的数据库模式,每个客户端一个。

我还为每个数据库都有模型,并且能够部署创建新克隆的迁移。到目前为止,我一直在使用PHP和脚本遍历所有模式并更新对结构的任何更改。由于Web API 2和属性路由,我们正在转向C#和EF6。

我的问题是;有办法:

  1. 部署一个构建命令,该命令将执行update-database将为迁移执行的操作,并将其传递给数据库名称(为了创建帐户数据库的新克隆架构?

    < / LI>
  2. 部署一个构建命令,该命令可以执行update-database递归遍历每个目标数据库的内容吗?

1 个答案:

答案 0 :(得分:0)

  

“我有x个相同的数据库模式,每个客户端一个”   和
  “我还为每个数据库都有模型”

你的意思是我也为这些架构中的每一个都有模型吗?

Ef模型实体链接到Schema / TableName。

  

entity.ToTable(“tableName”,“schemaName”);

因此,如果每个客户端都获得自己的架构,那么每个模型都包含该架构中的所有表,并且客户端获得自己的模型。 那么如何在每个Context模型上运行update-database。我是另一种看问题的方法。

因此,答案取决于您如何跟踪每个客户信息的架构。

Powershell migrate.exe approach可能对您感兴趣,因此您可以在许多上下文模型上触发迁移。

Custom migration operations也可能很有趣。 Rowan是一名EF开发人员。

编辑:根据自动迁移评论,这值得一看 Managing migration triggers in code