包含来自多个数据库的数据的域实体的推荐模式

时间:2010-08-02 14:42:09

标签: database nhibernate design-patterns

我维护一个应用程序,它有许多域实体从多个数据库中提取数据。这通常的工作方式是从数据库A加载实体(其中存储了大多数字段)。当调用与数据库B中的数据相对应的属性时,实体会将SQL激活到数据库B以获取所有相关数据。

我目前正在使用'自己动手'的ORM,它很丑陋但有效(且易于理解)。我最近开始将NHibernate用于仅从数据库A中提取的实体,但我想知道如何将NHibernate用于从数据库A和B中提取的实体。

我能想到的最佳方式如下。我继续为数据库A中的实体使用基于NHibernate的类库。那些还需要来自数据库B的数据的实体在通过属性访问的单个类中公开来自数据库B的所有数据。调用此属性时,它将调用相应的存储库,并返回该对象。因此,需要从类库中引用用于访问数据库B的类库来访问数据库A.

这是否有意义,并且是否存在针对这种情况的更为确定的模式(必须相当常见)。

由于

大卫

1 个答案:

答案 0 :(得分:0)

我不知道它如何映射到您的情况,或者NHibernate移植到目前为止有多成熟,但您可能希望查看Shards

如果它对你不起作用,它至少可以提供一些有趣的模式来考虑。

编辑(根据评论):

这确实似乎没有映射到您的情况,因为Shards是关于数据的水平分割。

如果需要垂直拆分,则可能需要定义多个持久性单元。涉及两个数据库的查询和事务可能会变得有趣。我担心这对此无能为力。这个question肯定是相关的。