Я думаю, по какому пути пойти, и не могу решить, какой из них лучше. Может быть, вы можете дать мне идею убийцы:)
Моя проблема: у меня есть общий репозиторий, построенный поверх NHibernate. Его интерфейс очень прост, такой как Get (идентификатор объекта), Save, Delete и т. Д. Иногда этот интерфейс работает нормально, но иногда нет. Например, несколько объектов в моем проекте имеют свойство с именем Code (но не все). Я хочу иметь возможность получить сущность не только по первичному ключу, но и с этим свойством. Другая ситуация, когда мне нужно отфильтровать некоторые объекты с датами или предоставить другие критерии фильтрации, которые являются специфическими для отдельных объектов. В настоящее время я думаю о следующих решениях:
- Linq - Я могу вернуть объект IQueryable из репозитория для каждого типа, а затем отфильтровать запрос, используя выражения linq. Мне не нравится эта идея, потому что, если я пойду этим путем, я не увижу причину хранилища.
- Репозиторий, специфичный для объекта - Здесь я могу построить объект, специфичный для общего репозитория. У него будут такие методы, как Get (DateTime dateFrom, DateTime dateTo) и т. Д. Недостатком является то, что мне придется создавать класс репозитория для каждого объекта сущности. Хорошей стороной является то, что будет намного проще сохранить / удалить граф объектов из базы данных, потому что он знает зависимости сущности.
- Скажите, пожалуйста:)