我正在开发一个多租户MVC 4应用程序,我将采用每个客户方法的一个模式。我想在客户注册时在代码中运行数据库迁移。这是否可以使用EF 5 / Code First Migrations?
因此,当客户注册时,我将在dbo中创建一个帐户。然后我将检查他们的子域是否作为数据库中的模式存在,如果没有,我将创建模式并理想地运行迁移。
谢谢!
澄清
当我在数据库中为客户创建新架构时,我想运行该新架构的迁移。例如,
我将拥有schema1.Products和schema2.Products。
答案 0 :(得分:2)
如果我说得对你想要的话......
你可以使用这样的东西
var migrator = new DbMigrator(new Configuration());
if (migrator.GetPendingMigrations().Any())
migrator.Update();
或者甚至更好,您可能想要创建自己的initializer
- 例如检查我的这些帖子......
What is the correct use of IDatabaseInitializer in EF?
How to create initializer to create and migrate mysql database?
<小时/> 我在您的方法中看到的问题是,您必须“分离”帐户模型/数据库 - 以及您尝试迁移的帐户。既然你提到了多租户,那可能就是这种情况。
但我想你也可以为帐户等创建“基本实体” - 然后将其余部分迁移到顶部。这有点复杂的情况 - 模型在启动(第一次使用)时创建一次(每个连接)并从那时开始缓存。所以唯一的就是重新启动重装,我想(不要相信我的话,只是在这里大声思考)
答案 1 :(得分:0)
不确定这是否是您要求的,您可以从命令行运行代码迁移:
packages\EntityFramework.5.0.0\tools\migrate.exe Example.dll /startUpDirectory:Example\bin
因此理论上,只要新客户注册,您就可以调用它。