【问题标题】:Moving an NHibernate-heavy application from single-tenancy to multi-tenancy with multiple schemas将 NHibernate 繁重的应用程序从单租户迁移到具有多个模式的多租户
【发布时间】:2015-05-16 23:06:51
【问题描述】:
我目前有一个单租户应用程序,它使用 fluent-nhibernate 映射将 C# 对象映射到我的 MySQL 数据库中的表。
为了将多租户引入我的应用程序,我正在考虑为每个租户使用一个架构。也就是说,我将拥有具有相同表结构的 n 模式,n 有数百个。
如何安装 NHibernate 以及我的流利映射,以便我可以任意访问正确的架构,而不必复制我的 C# 对象以映射到每个架构?
【问题讨论】:
标签:
c#
nhibernate
fluent-nhibernate
multi-tenant
fluent-nhibernate-mapping
【解决方案1】:
未测试,但您可以在SessionFactory(技术上在其配置中)设置默认模式名称。该物业是hibernate.default_schema。所以你可以有多个SessionFactory,每个模式一个。显然,您不能在实体级别设置场景名称。
类似:
var config = new Configuration();
... other configuration ...
config.Properties["hibernate.default_schema"] = "Foo"; // your schema name
ISessionFactory sf = config.BuildSessionFactory();