如果我實現一些簡單的OR/M工具,我應該在哪裏放置身份映射?顯然,每個Repozitory都應該可以訪問自己的身份映射,所以它可以註冊已加載的對象(或者DataMapper是在IdentityMap中註冊對象的人)。IdentityMap所在的位置:UnitOfWork或Repository?
當我提交工作單元時,還需要訪問標識映射以查看哪個實體是髒的,哪個是乾淨的(或者我又錯了,並且有一些外部對象調用了我的RegisterClean/RegisterDirty方法UnitOfWork類?那麼這是什麼對象?)。
這是否意味着我應該將IdentityMap實現爲一個完全獨立的對象,其中包含每個實體類型的內部IdentityMaps?
對IdentityMap,Repozitory和UnitOfWork如何協同工作非常困惑。
據我所知,如果我有例如CustomerRepsitory與方法GetCustomersBySurname,這將啓動工作單元,因爲存儲庫本身將無法註冊對象到身份映射?但是如果我的工作單元默認使用事務,那麼在讀數據時開始事務並不好,所以UoW需要一些方法來查看它是否只包含讀取,然後不開始事務。 無論如何,很高興看到一些優選簡單的OR/M工具的類圖。不知何故,我找不到任何。 – JustAMartin 2009-11-25 22:25:19