1

我有 NHibernate 模型,如果我应该将它们映射为集合,我会被撕裂。为了简单地说明这个问题,一个Person总是在所有表上被引用,将所有引用Person的表映射为Person的另一个属性(即集合)是否明智。这也太臃肿了吧?

为了防止我的问题出现 XY 问题:

我想要实现的是从 Person 到另一个表进行 LEFT JOIN,一个简单的 JOIN 是不够的,因为我需要报告所有 Person,即使他们没有集合,因此这需要 Linq 的 DefaultIfEmpty,但是 NHibernate 没有'还不支持 DefaultIfEmpty。但是,我不想使用 QueryOver,因为这个查询 API 看起来很拜占庭式,一个 30 行的 SQL/Linq 将变成 100 行的 QueryOver。将所有引用 Person 模型作为 Person 集合的模型映射到以便我仍然可以使用 Linq 是否很好?并且只会在 Person 的子表上使用 FetchMany 吗?

但是,同事不想过度映射所有模型,因为他认为模型会变得臃肿,尤其是对于像 Person 这样的主表。他也认为域模型应该只作为数据存储的外观。这是一种实用的领域建模方法吗?

我只是用 Person 模型用最简单的术语来说明问题,我认为有很多业务模型应该作为集合映射到另一个模型。这也排除了在进行 LEFT JOIN 时使用 QueryOver API 的需要,因此我们仍然可以使用 Linq 和 FetchMany

4

1 回答 1

1

没有臃肿的模型。

您的代码不使用的引用和集合由 NH 单独保留。

于 2013-05-23T22:48:51.500 回答