Почему класс ObjectContext не является производным от некоторого интерфейса? - PullRequest
5 голосов
/ 06 сентября 2010

Я считаю, что люди в MS намного умнее, чем я.Я пытался создать / протестировать репозиторий, который почти следует этому подходу, за исключением того, что я хочу свободно связать зависимость ObjectContext внутри репозитория.Я обнаружил, что для того, чтобы сделать это, мне нужно прыгнуть много обручей, как показано в этой статье. Даже с этим подходом сложно работать, когда

  1. .edmx из существующей базы данных
  2. У вас есть общий репозиторий, построенный на основе интерфейса ObjectContext и IObjectSet
  3. Во время модульного тестирования вы хотите подделать этот объектный контекст и сохранить все операции в памяти.Подумайте о тестировании репозиториев.

Теперь реальный вопрос, почему создатели ObjectContext решили не иметь IObjectContext?

Надеюсь, мой вопрос имеет смысл, я буду рад, если кто-то сможетдокажите, что это не так и показывает мне путь.

Заранее спасибо!

1 Ответ

5 голосов
/ 08 сентября 2010

Поскольку контекст является частичным классом, вы можете легко добавить интерфейс к нему в отдельном файле: public partial class YourContext : IMyCustomInterface, и вы можете поместить в IMyCustomInterface любые подписи, которые вы хотите использовать из сгенерированного ObjectContext.

Или вы можете пойти (обычно) более рекомендуемым способом, который заключается в том, чтобы абстрагироваться дальше, чем ObjectContext, в репозитории, как в этом сообщении в блоге (эта серия публикаций интересна и актуальна) или это .

...