Я использую EF 4.2, и изначально я развернул свои собственные классы репозитория для каждого набора объектов. Когда я исследовал further, я понял, что DbContext и IDbSet реализовали единицу работы и шаблон репозитория, который мне нужен.Расширение методов поиска Entity EF
Это отлично работает, но мне бы хотелось, чтобы некоторые «вспомогательные» методы возвращали определенные объекты с использованием обычно запрашиваемых свойств, кроме первичного ключа.
Например, чтобы выбрать сотрудника по электронной почте и статус учетной записи, а не первичный ключ идентификатора. У моего исходного репозитория пользователя была перегрузка для этого.
Мой вопрос: где я должен добавить этот вспомогательный метод? Я вижу, что у меня есть несколько вариантов:
- Добавить класс типа службы логики домена с помощью этого метода, который использует dbContext и потребляется другими классами и методами логики домена.
- Расширьте класс DbContext, чтобы иметь дополнительный метод.
- Замените IDbSet на пользовательский репозиторий.
- Оберните dbContext в дополнительные классы репозитория для каждого набора объектов и добавьте метод к конкретному пользователю.
Кажется, что для каждого существуют плюсы и минусы, но я склоняюсь больше к 1 или 2. Любые мысли?
Это был мой пятый вариант;) я извлек интерфейс от моего контекст (с использованием шаблонов T4), и я работаю против этого интерфейса в своих классах логики домена. Могу ли я добавить/добавить подпись к интерфейсу? –
Это метод расширения - он является статическим, поэтому он не является частью какого-либо интерфейса. –