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