首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架6和在没有默认数据库时的迁移

实体框架6和在没有默认数据库时的迁移
EN

Stack Overflow用户
提问于 2015-06-12 07:37:22
回答 2查看 395关注 0票数 1

我有一个解决方案,其中没有一个默认数据库。我有一个主数据库,它为请求数据的客户返回一个连接字符串,每个客户都有自己的数据库。我首先使用迁移(并将AutomaticMigrationsEnabled设置为false)和代码。

命令“update-database”从代码中“超出”(Database.SetInitializer(新的MigrateDatabaseToLatestVersion());)。

第一次,这一切都很好,但是当我之后添加一个迁移时,我不能,因为有一些待处理的迁移。我无法从VS运行更新数据库,因为连接字符串是在运行时设置的。

用迁移和实体框架6处理像我这样的设置的正确方法是什么?

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-12 08:01:14

您拥有的是所谓的多租户应用程序。是的,EF迁移也可以支持这种情况。

您只需将您的migrator从MigrateDatabaseToLatestVersion更改为自定义的迁移上下文创建的确切数据库的自定义迁移器。

然后,忘记从powershell控制台执行update-database。这总是更新默认的数据库!相反,您的自定义迁移器将自动更新您连接到的数据库。

自定义migrator的完整源代码可以在我的博客条目中找到:

http://www.wiktorzychla.com/2013/05/entity-framework-5-code-first-multi.html

请注意,由于EF的耳麦版本中有一个bug,多租户场景中的迁移从EF6.1.3开始正确地工作

由于这个错误,您的多租户应用程序可能会错误地将连接字符串分配给新创建的db上下文。

https://entityframework.codeplex.com/SourceControl/changeset/4187b1c308316a22b38ef533b1409024bc0f7406

票数 1
EN

Stack Overflow用户

发布于 2015-06-12 08:02:19

控制台中的Add-MigrationUpdate-Database仍然引用数据库。

要创建一个DbContext,这些命令要么使用它的无参数构造函数(如果有),要么它实例化一个存在的IDbContextFactory<T>,并调用它的Create方法来获得它。

在运行时没有使用这个特定的数据库并不是很重要,但是在设计时确实需要一个这样的数据库来允许您添加迁移。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30797756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档