如何在MVC中使用Nhibernate中的Multitenant和Spring

如何在MVC中使用Nhibernate中的Multitenant和Spring,spring,spring-mvc,nhibernate,multi-tenant,Spring,Spring Mvc,Nhibernate,Multi Tenant,我在MVC中有一个应用程序,在服务器上部署了Hnibernate。当前只有一个客户端正在使用此应用程序。现在有许多客户端,所有客户端都将使用此应用程序和不同的数据库,但所有客户端的模式都将相同。 对于这个实现,我正在考虑一种方法- 我创建了一个新的数据库,其中的表包含有关单个客户端数据库连接字符串的信息。 当应用程序运行时,Nhiberate为所有数据库创建多个会话工厂,其中包括所有客户端数据库和主数据库。 例如,有两个客户机“A”和“B”,其数据库名为“A_db”和“B_db”。以及另一个主数

我在MVC中有一个应用程序,在服务器上部署了Hnibernate。当前只有一个客户端正在使用此应用程序。现在有许多客户端,所有客户端都将使用此应用程序和不同的数据库,但所有客户端的模式都将相同。 对于这个实现,我正在考虑一种方法- 我创建了一个新的数据库,其中的表包含有关单个客户端数据库连接字符串的信息。
当应用程序运行时,Nhiberate为所有数据库创建多个会话工厂,其中包括所有客户端数据库和主数据库。 例如,有两个客户机“A”和“B”,其数据库名为“A_db”和“B_db”。以及另一个主数据库,它将连接字符串保存为“All_db”。然后在本例中,nhibernate为所有三个db创建3个会话工厂。 所以,当用户输入他们的登录凭证时,我将从主数据库检查该客户机的相关连接字符串。然后销毁与该客户端数据库连接字符串不相关的所有会话工厂。因此,通过这样做,只剩下一个属于他的数据库的会话工厂。 这是我的方法正确吗??
我正朝着正确的方向前进,然后为这种方法提供一些代码,比如创建多个会话工厂,然后删除除相关会话工厂之外的所有会话工厂?

您可以向GetSession方法提供一个connectionstring。查看此文件了解更多信息。

当您只需在一个数据库和单个数据库的相应表中添加“客户机Id”列时,为什么要为每个客户机单独设置数据库?这是一个应用程序,也是客户机对单独数据库的需要。@AmitJoshi这是个坏主意。查询中出现一个错误,客户可以看到彼此的数据。