Сначала позвольте мне заявить, что я не против шаблонов репозитория.Недавно я успешно использовал один на проекте.
Я бы сказал, что будьте осторожны ... и если вы не можете инкапсулировать требования в ваших объектах, ваш OO подход, возможно, придется рассмотреть снова.Представление слоя доступа к данным для выполнения других задач кажется запахом кода.Я использовал Service Layor для получения запросов и управления транзакциями и версиями, но не для дополнительных вещей, таких как проверка и т. Д.Потенциально ваш уровень обслуживания может выглядеть следующим образом.
public enum UpdateResult
{
Success,
NoMyEntityFound,
StaleData,
InvalidRequest
}
public class MyService
{
...
...
public UpdateResult Update(...)
{
...Start Tran
...Load var m = MyEntity
...do the bare minimum here
...m.Update()
...Commit Tran
return UpdateResult.Success;
}
}
Сказав все это предостерегающим хвостом по хранилищам
http://ayende.com/blog/3955/repository-is-the-new-singleton