如果我实现一些简单的OR / M工具,我在哪里放置身份地图?显然,每个存储库都应该可以访问自己的标识映射,因此它可以注册加载的对象(或者DataMapper可能是在IdentityMap中注册对象的那个?)。
当我提交工作单元时,我还需要访问身份映射以查看哪个实体是脏的哪个是干净的(或者我又错了,并且有一些外部对象调用我的UnitOfWork的RegisterClean / RegisterDirty方法class?那么这个对象是什么?)。
这是否意味着我应该将IdentityMap实现为一个完全独立的对象,其中包含每个实体类型的内部IdentityMaps?
对于IdentityMap,Repository和UnitOfWork如何协同工作非常困惑。
答案 0 :(得分:4)
使用我们的.NET O/R Mapper, LightSpeed,我们将身份地图放在工作单位的单位内。这对我们来说非常有效,并且感觉非常自然,因为它在工作单元的生命周期中有效地充当了用于查询目的的1级缓存。
通常,注入或以某种方式为您的Repository类提供UoW,以便您有一个有效的范围和查询网关。
我希望有所帮助。