IdentityMap所属的位置:UnitOfWork或Repository?

时间:2009-11-25 21:46:09

标签: orm data-access-layer

如果我实现一些简单的OR / M工具,我在哪里放置身份地图?显然,每个存储库都应该可以访问自己的标识映射,因此它可以注册加载的对象(或者DataMapper可能是在IdentityMap中注册对象的那个?)。

当我提交工作单元时,我还需要访问身份映射以查看哪个实体是脏的哪个是干净的(或者我又错了,并且有一些外部对象调用我的UnitOfWork的RegisterClean / RegisterDirty方法class?那么这个对象是什么?)。

这是否意味着我应该将IdentityMap实现为一个完全独立的对象,其中包含每个实体类型的内部IdentityMaps?

对于IdentityMap,Repository和UnitOfWork如何协同工作非常困惑。

1 个答案:

答案 0 :(得分:4)

使用我们的.NET O/R Mapper, LightSpeed,我们将身份地图放在工作单位的单位内。这对我们来说非常有效,并且感觉非常自然,因为它在工作单元的生命周期中有效地充当了用于查询目的的1级缓存。

通常,注入或以某种方式为您的Repository类提供UoW,以便您有一个有效的范围和查询网关。

我希望有所帮助。