【发布时间】:2012-04-12 13:05:26
【问题描述】:
我使用 Fluent NHibernate,现在必须处理存档数据,其中同一个表存在于多个 MSSQL 数据库中。根据用户提供的日期值,我必须连接到不同的数据库,而所有映射信息保持不变。
更具体:如果提供的 Date 值在当前年份内,则使用 DB CUR,否则使用年度 DB(2011、2010、2009...)。
现在有一段时间人们告诉我一遍又一遍地重新创建一个 SessionFactory 是一件相当昂贵的事情,所以我心想一定有一种方法可以使用现有的 sessionFactory,更新我的 ClassMap (例如将架构从“CUR.DBO”更改为“2011.DBO”)并重新连接。
我尝试将 FluentConfiguration 和 SessionFactory 弄得一团糟,但然后我在膝盖中中了一箭找不到在运行时刷新映射的方法。 p>
我最终会创建一个新的 SessionFactory 吗?或者有没有人知道在运行时重新初始化 (Fluent) NHibernate 映射的可行程序?
编辑: 一个非常重要的细节,SqlConnection 也是外部提供的。它提供对所有数据库的访问,这意味着理论上我永远不必创建连接。所以,基本上我要做的就是为每个 Archive 创建一个 SessionFactory 来更新 Mapping 的 Schema 信息,指向另一个数据库。但这正是我卡住的地方。
【问题讨论】:
-
为什么不创建 2 个会话工厂?一个用于存档数据库,一个用于生产数据库。
-
我们每年有一个存档,所以我最终会创建至少 10 个左右。据我所知,这基本上就是我必须要做的,但希望有更聪明的方法......
标签: nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping