Перекресток TDD и MVC.Какой ORM хорошо интегрируется? - PullRequest
2 голосов
/ 07 февраля 2011

Я только начинаю в мире MVC, и я использовал стандартный шаблон MVC, встроенный в VS 2010. У меня есть пара контроллеров и подключенных представлений, и теперь мне нужно добраться до своей базы данных .

У меня есть достаточно большая база данных SQL Server 2005, уже определенная сторонней компанией. Я пытаюсь использовать интерфейс отчетности / администрирования для нужд нашей конкретной компании.

Итак, я хотел бы сначала просто вытащить список вещей из нескольких таблиц из этой БД. Итак ... используя MVC 3, какие инструменты ORM хорошо интегрируются?

Я также пытаюсь использовать подход Test Drive Design. Я не уверен, что делать для тестов, которые потребуют вставки / обновления / удаления данных. Это были «издевательства», вступающие в игру?

Ответы [ 2 ]

4 голосов
/ 07 февраля 2011

Каждый ORM прекрасно интегрируется с Asp.net MVC.В asp.net mvc нет ничего, что могло бы затруднить интеграцию ORM.

Ваше самое большое препятствие - использование устаревшей базы данных.NHibernate и Entity Framework 4 являются единственными двумя бесплатными ORM, которые, как мне известно, хорошо сопоставляются с устаревшими базами данных.EF4 не так уж и плох в отображении в унаследованные базы данных, он просто лучше работает с разработкой экологически чистых месторождений.Напротив, NHibernate может отобразить практически любой сценарий, который вы можете придумать.

Простота тестирования будет в основном зависеть от того, какой шаблон доступа к данным использовать.Шаблон Repository популярен из-за того, насколько он удобен для тестирования.Насмешки не требуется.

1 голос
/ 07 февраля 2011

Я настоятельно рекомендую вам использовать компоненты Castle: Windsor, Dynamic Proxy и Active Record.По сути, вы можете имитировать данные, поскольку Active Record создает модель с атрибутами, которые позволяют вам манипулировать ими вручную или с помощью перехватчиков Dynamic Proxy.Сверните репозитории и службы данных, чтобы получить больше контроля над доступом к данным.
Используйте шаблон определения *1003*, где это применимо, чтобы упростить гибкие запросы.
Используйте Linq с Active Record в ваших службах данных, чтобычтобы иметь возможность передавать IEnumerable<T> или спецификации (которые могут или не могут обернуть абстрактные критерии NHibernate и преобразовать их в DetachedCriteria или могут содержать DetachedCriteria или HQL или что-то, что вы инкапсулируете) как запросы.
Таким образом, вы можете легко смоделировать доступ к вашей базе данных, а также более эффективно проводить рефакторинг и тестирование.

...