c# - Entity Framework 6 : Creating database with multiple contexts

标签 c# mysql database entity-framework

我正在开发一个 Multi-Tenancy 应用程序,为此我们决定为每个租户建立一个数据库。我正在编写一项服务来为新客户端创建和初始化新数据库。在同一个数据库上定义了多个上下文。到目前为止,我已经使用 nuget update-database 让所有上下文创建它们的 db 对象。现在我需要在运行时做同样的事情。我试过:

context.Database.Initialize(false); context.Database.CreateIfNotExists();

但只有第一个上下文创建它的表。我知道上下文会在第一次使用时初始化数据库,但显然如果数据库已经存在则不会。我尝试了几个初始化器,但没有成功。我不想编写一个结合了所有其他上下文的新上下文,因为它很难维护。我知道另一种选择是在部署时生成 sql 脚本并在运行时执行它们。这将是我最后的选择。

非常感谢任何建议。

最佳答案

EF6 确实支持多个上下文的初始化。它基于 ContextKey(__MigrationHistory 上的属性和新字段)。
它支持您的(和我的一样)基于多个数据库的 Multi-Tenancy 方法。
我知道添加链接不好,但这篇文章做得很好: https://msdn.microsoft.com/en-us/magazine/dn948104.aspx

关于c# - Entity Framework 6 : Creating database with multiple contexts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170814/

相关文章:

database - Roll up 和 Cube operator in access (Summary Queries)

php - 计算数据库中的行数并回显所需的行号

mysql - 在 MYSQL 工作台中创建的数据库的文件位置

c# - 如何将 MainWindow.xaml 拆分为单独的文件? - 外包<Style>?

c# - 如何在 Winforms 文本框上允许 CTRL-V(粘贴)?

c# - 如何将文件路径数组转换为分层 JSON 结构

MySQL 选择语句 - GROUP BY/Unique

c# - 如何使用 LINQ 填充类中的集合?

mysql - 我应该在更新之前使用选择来减少回滚吗?

php - 在 PHP/MySQL 中使用数组