我有一个带有多个数据库的SQL Server。 Database1有一个表,其中包含存储在Database2上的表中的ID的引用。不确定是否可能,但是我可以配置NHibernate(特别是Fluent NHibernate)来饱和从多个数据库中提取数据的对象吗?
我并不关心写这些表,我只想尝试ORM对象在数据查看应用程序中显示。
我意识到这不是一个理想的数据库情况,但这是我给予的工作。
答案 0 :(得分:9)
特定于数据库的查询结构(如跨数据库查询)的常见答案是在“本地”数据库(NH连接到)上创建一个视图,该数据库将执行跨数据库查询并返回已连接的结果。您还可以拥有每个数据库的存储库,并开发一些方法来查询每个数据库中的记录并手动连接它们。
有一件事也会奏效;每个映射的table属性只是一个字符串,可以是任何东西; NHibernate只需要它并将其插入需要引用表名的任何地方。因此,您可以尝试使用其完全限定名称来指定映射中的表:ConnectedDB..LocalTable,OtherDB..RemoteTable。它可能被认为是一种黑客攻击,但它在某种程度上也相当优雅;您的程序甚至不必知道持久性模式中有多个数据库。