具有多个数据库的实体框架多租户架构&泛型

时间:2016-03-12 10:14:54

标签: c# .net database entity-framework generics

我需要构建一个多租户的应用程序。代码完全由每个公司共享,但每个公司都有自己的数据库。

每家公司都通过传递自己的“API密钥”的Web API访问应用程序。此密钥用于在master数据库的“GlobalCompanies”表中“查找”公司特定的配置详细信息,该表包含公司特定的详细信息,包括数据库详细信息和完整连接字符串。

我的目标是建立一个新客户,只需运行一些脚本来创建一个新的数据库,并用新的数据库详细信息更新这个'GlobalCompanies'表,一切都会正常工作!

因此,除了掌握配置详细信息的主数据库之外,web.config文件中没有配置信息。

因此流程将是:

  1. 浏览器调用Web API方法并传递API密钥
  2. 应用程序使用API​​密钥并确定正在使用的数据库
  3. 应用程序使用公共代码,但将数据库操作应用于公司特定的数据库。
  4. 我发现这篇文章Repository Pattern with Entity Framework 4.1 and Code First让我深入了解了Repository模式的泛型,但我不确定如何动态创建和使用不同的DBContexts? (即使这是正确的方法)?

    我之前使用ADO.net使用不同的连接字符串,但理想情况下我想使用实体框架和泛型。

    有人可以指出我正确的方向吗?我找不到这种架构的任何具体例子。

1 个答案:

答案 0 :(得分:1)

EF与您使用ADO.Net所做的相同。您只需将不同的连接字符串传递给上下文的构造函数。 (没有参数的默认构造函数将从配置文件中获取连接字符串。)上下文不关心连接字符串来自何处 - 配置文件,主数据库,由调用代码构造 - 它将只使用它。 / p>

当然,如果连接字符串格式错误,或者指向不包含预期表的db,则会出现问题。但我相信你会期待的。

相关问题