使用EF 6的多租户和连接池

时间:2013-05-03 09:15:21

标签: entity-framework connection-pooling entity-framework-6

我们使用EF 4.3 Code First Model开发了一个多租户应用程序,每个租户都有自己独立的数据库。由于我们期望有大量租户,我们希望维护租户之间的连接池。

为了在EF 4.3 Code First模型中实现这一点,我们创建了“AppMaster”数据库并使用EFProviderWrapperToolkit开发了自己的提供程序,该程序仅在内部使用SQL提供程序。我们的定制提供商将始终首先连接到“AppMaster”数据库,然后将数据库更改为相应的租户特定数据库。一切都按预期正常工作。

但是同一个提供程序不能使用EF6,因为他们已经将提供程序特定代码移动到'System.Data.Entity.Core.Common'命名空间下的EntityFramework DLL。

是否有任何解决方案可以将指向相应数据库的所有租户的连接池维护到同一个数据库服务器中?

1 个答案:

答案 0 :(得分:0)

EF6中的提供者模型已更改。首先,您需要使用EF6提供程序。如果您使用的是Sql Server,EF6 Sql Server提供程序将包含在EF6程序包中。由于包装提供程序只是另一个提供程序,您应该阅读并遵循the document about rebuilding a provider for EF6并且包装提供程序应该继续工作。请注意,该文档包含有关EF6中包装提供程序的部分。此外,在EF6中,我们引入了dependency injection and code-based configuration,这使得包装的某些方面更容易。