Как реализовать это с помощью Repository Pattern (или что-то более подходящее)? - PullRequest
1 голос
/ 29 января 2011

У меня есть хранилище под названием: IChocolateRepository

Это происходит от универсального интерфейса хранилища IRepository <>, который определяет основные функции хранилища (FindAll, Delete, Add и т. Д.)

Теперь янеобходимо написать фрагмент кода, который будет идти и удалять «все шоколадные конфеты из базы данных с данными об истечении срока до указанной даты» (при условии, что ExpiryDate является ненулевым свойством в классе модели Chocolate.)

это принадлежит в хранилище?

Кроме того, как будет выглядеть пример реализации?(Я использую EF CTP5)

Ответы [ 3 ]

2 голосов
/ 29 января 2011

Если у вас уже есть метод Remove (T item) в базовом интерфейсе, тогда это не помешает, если вы добавите Remove (предикат <'T'> условие), чтобы удовлетворить ваши потребности.

Поэтому вместо удаления одного конкретного элемента вы можете иметь очень общий интерфейс для удаления всего, что удовлетворяет данному предикату.

2 голосов
/ 29 января 2011

Я так не думаю.

Это относится не к Repository, а к классу, который работает с Transactions, используя эти Repositories.

Если это не слишком простое приложение, где лучше избегать отдельного слоя, чтобы избежать сложности.

0 голосов
/ 30 января 2011

У меня был небольшой проект (FYP для получения университетской степени), и из-за нехватки времени, и из-за того, что я не знал лучше, я добавил свои более сложные методы данных в хранилище, жестко запрограммированные.

Лично я быиспользуйте идею Андрея Таптунова с предикатами, чтобы код доступа к данным содержался в классе репозитория.Я видел транзакции, написанные в книге по управлению доменами, которая в любом случае работает как предикаты.Транзакция записывает, чего вы хотите достичь, и репозиторий работает по этому запросу.

...