Как использовать родинки, чтобы заглушить вызов хранимой процедуры в рамках сущности? - PullRequest
1 голос
/ 12 августа 2010

Я пытаюсь заглушить звонок в БД.Основная идея для такой строки кода:

Person person = (from p in this.Entities.FindPerson("Smith") select p).FirstOrDefault();

, чтобы вернуть объект так, как я хочу, без перехода в дБ.FindPerson (строка) представляет сохраненный процесс (на всякий случай).

Я пытался перезаписать FindPerson, но мне нужно вернуть ObjectResult.Это закрытый класс без публичных конструкторов.Все мои попытки его создания заканчивались звонком в db.

1 Ответ

2 голосов
/ 17 августа 2010

Я искал ответ на тот же вопрос. Следующая ветка форума прояснила это для меня: форум MSDN

По сути, они говорят не о том, чтобы напрямую звонить в EF, а о том, чтобы сделать ваш код тестируемым, абстрагируя уровень данных от уровня бизнеса.

Вы можете сделать это с помощью шаблона Repository или чего-то подобного, а затем использовать Dependency Injection, чтобы внедрить макет.

Цитата от Пели (сотрудник Microsoft, участвующий в программе "Pex"):

Родинки должны быть последним средством решение. Предпочтительным способом является использование тестируемый дизайн, то есть абстракция между уровнем данных и бизнесом слой и т.д ...

НТН

Приветствия

...