繁体   English   中英

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

[英]Entity Framework Multi-Tenant Architecture With Multiple Databases & Generics

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

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

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

因此,除了可能包含配置详细信息的 master 数据库之外,web.config 文件中没有配置信息。

因此,流程将是:

  1. 浏览器调用 Web API 方法并传递 API Key
  2. 应用程序使用 API 密钥并确定正在使用哪个数据库
  3. 应用程序使用通用代码,但将数据库操作应用于公司特定的数据库。

我发现这篇文章Repository Pattern with Entity Framework 4.1 and Code First它让我深入了解了 Repository 模式的泛型,但我不确定我将如何动态创建和利用不同的 DBContext? (如果即使这是正确的方法)?

我之前使用不同的连接字符串在 ADO.net 上完成了此操作,但理想情况下我想利用实体框架和泛型。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM