我正在开发一个多租户 MVC 4 应用程序,并且我将采用每个客户一个模式的方法。当客户注册时,我想在代码中运行数据库迁移。这可以使用 EF 5/Code First 迁移吗?
所以当客户注册时,我会在 dbo 中创建一个帐户。然后,我将检查它们的子域是否作为模式存在于数据库中,如果不存在,我将创建模式并在理想情况下运行迁移。
谢谢!
澄清
当我在数据库中为客户创建新架构时,我想为该新架构运行迁移。例如,
我将拥有 schema1.Products 和 schema2.Products。
我正在开发一个多租户 MVC 4 应用程序,并且我将采用每个客户一个模式的方法。当客户注册时,我想在代码中运行数据库迁移。这可以使用 EF 5/Code First 迁移吗?
所以当客户注册时,我会在 dbo 中创建一个帐户。然后,我将检查它们的子域是否作为模式存在于数据库中,如果不存在,我将创建模式并在理想情况下运行迁移。
谢谢!
澄清
当我在数据库中为客户创建新架构时,我想为该新架构运行迁移。例如,
我将拥有 schema1.Products 和 schema2.Products。
如果我做对了你想要的...
你可以使用这样的东西
var migrator = new DbMigrator(new Configuration());
if (migrator.GetPendingMigrations().Any())
migrator.Update();
或者甚至更好,您可能想创建自己的initializer- 例如检查我的这些帖子......
EF 中 IDatabaseInitializer 的正确用法是什么?
但是我想您也可以为帐户等创建“基本实体”-然后将其余部分迁移到顶部。这是一个有点复杂的场景 - 模型在开始(第一次使用)时创建一次(每个连接)并从那时起缓存。所以唯一的办法就是重新加载,我认为(不要信守诺言,只是在这里大声思考)
不确定这是否是您所要求的,您可以从命令行运行代码迁移:
packages\EntityFramework.5.0.0\tools\migrate.exe Example.dll /startUpDirectory:Example\bin
所以理论上你可以在新客户注册时调用它。