使用NHibernate在多个数据库中填充对象

Chr*_*ees 4 c# nhibernate fluent-nhibernate

我有一个SQL Server与多个数据库.Database1有一个表,其中包含存储在Database2上的表中的ID的引用.不确定是否可能,但是我可以配置NHibernate(特别是Fluent NHibernate)来饱和从多个数据库中提取数据的对象吗?

我并不关心写这些表,我只是试图在数据查看应用程序中对ORM进行显示.

我意识到这不是一个理想的数据库情况,但这是我给予的工作.

Kei*_*thS 9

特定于数据库的查询结构(如跨数据库查询)的常见答案是在"本地"数据库(NH连接到)上创建一个视图,该数据库将执行跨数据库查询并返回已连接的结果.您还可以拥有每个数据库的存储库,并开发一些方法来查询每个数据库中的记录并手动连接它们.

有一件事也会奏效; 每个映射的table属性只是一个字符串,可以是任何东西; NHibernate只需要它并将其插入需要引用表名的任何地方.因此,您可以尝试使用其完全限定名称来指定映射中的表:ConnectedDB..LocalTable,OtherDB..RemoteTable.它可能被认为是一种黑客攻击,但它在某种程度上也相当优雅; 您的程序甚至不必知道持久性模式中有多个数据库.