Entity Framework UnitOfWork - PullRequest
       24

Entity Framework UnitOfWork

3 голосов
/ 08 марта 2011

Я использую шаблон UnitOfWork с EF 4, и мне было просто интересно, где должна существовать реализация EFUnitOfWork?Должен ли он жить на уровне хранилища?У меня есть все мои интерфейсы на уровне домена.Это звучит правильно?

Я использую Ninject для внедрения репозиториев с помощью IUnitOfWork.

Я думаю, это действительно не имеет значения, так как вы не собираетесь действительно тестировать свои специфичные для EF репозитории правильно?

Другой вариант - разместить его на уровне данных, где есть модели и контекст EF.

Имея его на уровне хранилища, этот слой теперь нуждается в ссылке на систему.Data.Entity.Плохо или хорошо?

Ответы [ 2 ]

1 голос
/ 08 марта 2011

Следуя DDD, вы обычно хотите проект ProjectName.Core в своем решении.В этом проекте будет иметь следующую структуру:

  • ProjectName.Core -> Репозиторий (все ваши интерфейсы репозитория)

  • ProjectName.Core ->DomainModel

  • ProjectName.Core -> Инфраструктура -> IUnitOfWork (интерфейс uow)

  • ProjectName.Core -> Инфраструктура -> DtatAccess (реализации репозитория)и все связанные с базой данных файлы, включая реализацию uow)

В некоторых случаях, если проект достаточно большой, я добавляю еще один проект в мое решение с именем ProjectName.Infrastructure.DataAccess и помещаю всеРеализации DataAccess в этом проекте.

0 голосов
/ 08 марта 2011

Обычно реализация находится на уровне репозитория для удобства чтения / понимания. Я не нахожу проблем с наличием ваших интерфейсов на уровне домена.

Вы можете даже иметь что-то похожее, как показано ниже

 - Domain
   ->Interfaces
   ->Repository
      -> Actual Implementation 

Однако, как вы сказали, действительно не имеет значения, где находится фактическая реализация. Однако - другим легко понять процесс, если правильно организовать структуру.

...