0

我正在开发一个多租户 MVC 4 应用程序,并且我将采用每个客户一个模式的方法。当客户注册时,我想在代码中运行数据库迁移。这可以使用 EF 5/Code First 迁移吗?

所以当客户注册时,我会在 dbo 中创建一个帐户。然后,我将检查它们的子域是否作为模式存在于数据库中,如果不存在,我将创建模式并在理想情况下运行迁移。

谢谢!

澄清

当我在数据库中为客户创建新架构时,我想为该新架构运行迁移。例如,

我将拥有 schema1.Products 和 schema2.Products。

4

2 回答 2

2

如果我做对了你想要的...

你可以使用这样的东西

var migrator = new DbMigrator(new Configuration());
if (migrator.GetPendingMigrations().Any())
    migrator.Update();  

或者甚至更好,您可能想创建自己的initializer- 例如检查我的这些帖子......

EF 中 IDatabaseInitializer 的正确用法是什么?

如何创建初始化程序来创建和迁移 mysql 数据库?


我在您的方法中看到的问题是您必须“分离”帐户模型/数据库 - 以及您尝试迁移的那个。既然你提到了多租户,那可能已经是这种情况了。

但是我想您也可以为帐户等创建“基本实体”-然后将其余部分迁移到顶部。这是一个有点复杂的场景 - 模型在开始(第一次使用)时创建一次(每个连接)并从那时起缓存。所以唯一的办法就是重新加载,我认为(不要信守诺言,只是在这里大声思考)

于 2013-05-01T15:38:47.330 回答
0

不确定这是否是您所要求的,您可以从命令行运行代码迁移:

packages\EntityFramework.5.0.0\tools\migrate.exe Example.dll /startUpDirectory:Example\bin

所以理论上你可以在新客户注册时调用它。

于 2013-05-01T15:26:10.257 回答