Asp.net mvc 4 在代码中执行代码优先迁移?

Asp.net mvc 4 在代码中执行代码优先迁移?,asp.net-mvc-4,ef-code-first,entity-framework-migrations,Asp.net Mvc 4,Ef Code First,Entity Framework Migrations,我正在开发一个多租户MVC4应用程序,我将采用每个客户一个模式的方法。我希望在客户注册时以代码形式运行数据库迁移。是否可以使用EF 5/代码优先迁移 因此,当客户注册时,我将在dbo中创建一个帐户。然后,我将检查它们的子域是否作为模式存在于数据库中,如果不是,我将创建模式并理想地运行迁移 谢谢 澄清 当我在数据库中为客户创建新模式时,我想为新模式运行迁移。那么比如说, 我将有schema1.Products和schema2.Products。不确定这是否是您想要的,您可以从命令行运行代码迁移:

我正在开发一个多租户MVC4应用程序,我将采用每个客户一个模式的方法。我希望在客户注册时以代码形式运行数据库迁移。是否可以使用EF 5/代码优先迁移

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

谢谢

澄清

当我在数据库中为客户创建新模式时,我想为新模式运行迁移。那么比如说,


我将有schema1.Products和schema2.Products。

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

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

所以从理论上讲,只要有新客户注册,你就可以调用它。

如果我做对了,你想要什么

你可以用这样的东西

var migrator = new DbMigrator(new Configuration());
if (migrator.GetPendingMigrations().Any())
    migrator.Update();  
或者更好的是,你可以创建自己的
初始值设定项
-例如,查看我的这些帖子


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


但我想你也可以为帐户等创建“基本实体”,然后将其余的迁移到顶部。这是一个有点复杂的场景-模型在开始(第一次使用)时创建一次(每个连接),然后缓存。因此,唯一的解决方法是重新启动重载,我想(不要信守诺言,在这里大声思考)

我想我要做的是对基本实体(如帐户)使用迁移,然后运行SQL脚本来创建模式和其他特定于模式的表。如果有两个不同的迁移类就好了。这有效地回答了您的主要问题(使用自定义初始值设定项)-但是其余的太具体了,我几乎不能告诉您比我已经做的更合理的事情。至于
两个不同的…
,迁移主要是“单例”迁移(迁移==您的配置+脚本+连接+数据库+迁移历史系统表)。我认为您可以有两个lib中的两个,但您必须有“两个db-s”(迁移表的原因是db)。它不是多租户(它采用EF6)。