每个租户有单独的SQL Server架构的多租户NHibernate应用程序

4

我正在编写一个新的多租户WCF RIA应用程序。 我计划使用共享数据库,为每个租户分配单独的SQL Server数据库架构。 我想使用NHibernate进行对象关系映射。

在映射类中配置SQL Server架构并不能解决问题,因为它是静态的,每个租户都需要一组映射类。

是否可能动态配置ISession以指定将对象映射到表时使用哪个SQL Server数据库架构?


每个模式/客户端之间是否有任何链接? - gbn
是的,每个客户(租户)都会有一个单独的模式。 - Branko
2个回答

3

您需要为每个客户端创建单独的SessionFactory,相应地更改配置中的default_schema属性。


我非常喜欢为每个客户端使用单独的SessionFactory的想法。这样,我还可以为每个客户端使用单独的用户名,并仅在一个模式中授予权限。 - Branko

1
如果客户之间没有联系,那么拥有单独的数据库可能是有意义的。尤其是当客户A说“请恢复”时,您不会破坏其他客户的数据。

我完全同意你的观点。问题在于会有很多小客户端,这将使我需要管理和支付许多小型数据库(我计划使用SQL Azure)。 - Branko
啊,好的。那不是我的最佳想法。 - gbn
我将从一个数据库开始,但如果需要,将支持将客户端分布到更多的数据库中。每个数据库将包含根据其使用情况为一定数量的客户端提供数据。通过这种设置,如果客户需要并愿意支付额外费用,一个数据库可以仅包含一个客户的数据。 - Branko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接