MVC3 и EF Data в первую очередь: каковы лучшие практики?
Похоже, что основное внимание в MVC3 и EF4.1 сосредоточено вокруг "кода в первую очередь" - я не могу найти какие-либо примеры или учебники, которые соответствуют следующим критериям:
- использует существующую базу данных SQLServer
- имеет отдельные проекты для доступа к сети и данным (у нас будет несколько веб-приложений, использующих одни и те же классы доступа к данным)
- рекомендации по валидации
Существует ли такой пример или учебник? Существуют ли какие-либо задокументированные "лучшие практики" о том, как этого добиться, или обоснование НЕ структурирования решения таким образом?
1 ответ
Это довольно распространенный сценарий, и он зависит от того, хотите ли вы использовать файл EDMX для отображения или хотите, чтобы отображение было определено в коде (например, сначала код).
Оба сценария могут быть сделаны в качестве базы данных в первую очередь
- Вы создадите EDMX из существующей базы данных со встроенными инструментами EF в Visual Studio и будете использовать шаблон генератора DbContext T4 для получения классов POCO и производного класса DbContext
- Вы загрузите EF Power Tools CTP и будете использовать его функцию обратного инжиниринга для генерации отображения кода, классов POCO и контекста.
Ни один из этих подходов не добавит аннотации данных. Аннотации данных об объектах не должны использоваться для проверки клиента (что является плохой практикой), если вы не работаете с очень простыми приложениями. Обычно ваши взгляды имеют более продвинутые ожидания, и их проверка может отличаться от сущности. Например, представление вставки и представление обновления могут нуждаться в разных проверках, и их невозможно выполнить с одним набором аннотаций данных на объекте. По этой причине вы должны перемещать аннотации данных для проверки в специализированные модели представлений и преобразовывать ваши сущности для просмотра моделей и наоборот (вы можете использовать AutoMapper, чтобы упростить это).
В любом случае, можно добавлять аннотации данных в сгенерированные классы с помощью классов собеседников, но, как уже упоминалось, это не очень хорошая практика.