2010-06-22 81 views
3

在我工作的公司,我们有一个数据库模式,但每个客户使用他们自己的专用数据库,一个中央数据库存储客户端联系人详细信息以及客户端正在使用的数据库,因此我们可以连接到适当的数据库。我看过使用NHibernate碎片,但它似乎已经非常安静,看起来不完整。Nhibernate碎片生产准备好了吗?

有没有人知道这个项目的状态?有没有人在生产中使用过它?

如果它还没有被认为可用于生产的点,那么还有什么替代方案?两个主要的似乎是:

  1. 创建每个数据库的会话工厂,然后包装,以选择合适的工厂,以产生正确的会话 - 这对我来说似乎有多余的会话工厂并没有太多有效的
  2. 仅创建一个会话工厂,但在调用opensession时将其传递给IDbConnection - 这将允许会话具有不同的数据库连接。

我对2的关注是NHibernate如何处理二级缓存,因为我相信它是由会话工厂控制的 - 也是HiLo生成器使用会话工厂,我相信。在这些情况下会有会议附加到不同的dbs导致问题?例如,我们最终将在两个数据库中使用一个ID为2的MyCompany.Model.User类,这将导致缓存内的冲突?

+0

对于OP,这可能会基于观点或基于本地化而被封闭。 – halfer 2018-03-04 23:09:42

回答

0

您可以看看Enzo SQL Shard SQL Server的分片库。如果您已经在使用NHibernate,则代码中可能需要进行一些更改,但