NHibernate:在没有DB链接的不同服务器上跨多个DB映射实体

Max*_*dov 5 .net nhibernate nhibernate-mapping multiple-databases

使用最新版本的NHibernate(可能还有一些插件),可以在不使用DB链接的情况下在不同服务器上的多个数据库中映射实体吗?

对于后台,我希望实现与此DBA.SE帖子中描述的内容类似的东西.

Max*_*dov 0

我在nhusers邮件列表上得到了一个有趣的答案。摘录如下:

来自杰森·麦克利

[...]如果您正在谈论跨多个数据库存储单个实体,那么答案并不明确。您也许可以使用自定义用户类型和/或事件侦听器来执行某些操作来水合对象,但这会导致维护起来很混乱。

另一种方法是使用 ETL 过程将数据从一个数据库传输到另一个数据库。与复制类似,但仅传输另一个数据库所需的数据。您最终会得到 1 个可写数据库和许多读取数据库。然后将域映射到单个数据库。

另一种选择是确定为什么有多个数据库。如果它们代表不同类型的数据/对象,则在域中明确表达这一点。例如,CustomerWithAddress 是与 CustomerOrder 不同的实体。如果您需要来自这两个数据库的信息,则单独查询每个数据库并在代码中构建投影。

var x = session1.get(id);
var y = session2.get(id);
返回合并(x,y);