在代码中执行代码首次迁移?

时间:2013-05-01 15:21:24

标签: asp.net-mvc-4 ef-code-first ef-migrations

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

因此,当客户注册时,我将在dbo中创建一个帐户。然后我将检查他们的子域是否作为数据库中的模式存在,如果没有,我将创建模式并理想地运行迁移。

谢谢!

澄清

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

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

2 个答案:

答案 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

因此理论上,只要新客户注册,您就可以调用它。