У меня довольно стандартный шаблон хранилища, в котором хранилища вводятся в мой контроллер MVC при построении. Репозитории инициализируются один раз на AppDomain и совместно используются другими контроллерами. Хранилища получают доступ к базе данных с помощью NHibernate ISessions и ICriteria, но доступ открыт с использованием методов ListXYZ вместо того, чтобы напрямую принимать ICriteria.Ограничение результатов из репозитория
Теперь мне нужен аккуратный способ ограничить результаты, возвращаемые в случаях certian, например, перечисление всех продуктов на данном рынке, известных только при вызове действия.
Я не хочу передавать это ограничение при каждом вызове метода ListXYZ, поскольку это приведет к множеству перегруженных методов. В идеале я хотел бы иметь доступ к репозиторию, как раньше, но с применяемыми ограничениями. Что-то вроде:
var rep = new ProductRepository().ApplyRestriction(new MarketRestriction("xy"));
var list = rep.ListInCategory("shirts");
Любые предложения Как мне это сделать? Или я делаю это слишком сложным для себя?
Спасибо, я долго избегал этого, потому что я думал, что это будет слишком сложно реализовать. Но как только я добрался до него, это не показалось мне слишком плохим, и он работает очень хорошо. – kaa