Где принадлежит IdentityMap:UnitOfWork или репозиторий?

StackOverflow https://stackoverflow.com/questions/1800183

  •  05-07-2019
  •  | 
  •  

Вопрос

Если я реализую какой-нибудь простой инструмент OR/M, где мне разместить карту идентификации?Очевидно, что каждый репозиторий должен иметь доступ к своей собственной карте идентификаторов, чтобы он мог регистрировать загруженные объекты (или, может быть, именно DataMapper регистрирует объекты в IdentityMap?).

И когда я фиксирую единицу работы, мне также нужно получить доступ к карте идентификаторов, чтобы увидеть, какой объект является грязным, а какой чистым (или я снова ошибаюсь, и есть какой-то внешний объект, который вызывает методы RegisterClean/RegisterDirty моего класса UnitOfWork?Тогда какой объект это делает?).

Означает ли это, что я должен реализовать IdentityMap как полностью независимый объект, который содержит внутренние IdentityMaps для каждого типа сущности?

Действительно запутался в том, как IdentityMap, Repository и UnitOfWork работают вместе.

Это было полезно?

Решение

С нашим .NET O/R Mapper, LightSpeed мы поместили карту идентичности внутри класса единицы работы.Это сработало для нас очень хорошо и кажется вполне естественным, поскольку эффективно действует как кэш уровня 1 для целей запроса в течение жизненного цикла единицы работы.

Как правило, внедрите или каким-либо образом предоставьте UoW для вашего класса репозитория, чтобы у вас была эффективная область и шлюз для запросов.

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top