Генерация классов POCO из модели с использованием шаблонов T4 вместо упрощенного подхода API Model First EF4.1 - PullRequest
3 голосов
/ 23 марта 2011

У меня есть модель, созданная с помощью визуального дизайнера. Теперь я хочу, чтобы классы POCO генерировались из него. В другом моем вопросе мне был предложен упрощенный подход API Model First EF4.1. Раньше я тоже думал о шаблонах T4.

Каковы ограничения упрощенной модели API EF4.1, в первую очередь, по сравнению с использованием шаблонов T4 для генерации классов POCO? Каковы преимущества подхода EF4.1, если таковой имеется (кроме того, предполагается, что он проще в использовании)? Мое решение сейчас будет очень трудно отменить, так как у меня будет довольно большой уровень персистентности, поэтому, возможно, будет сложно внести в него изменения в будущем.

В частности, меня интересуют следующие возможности:

  • могу ли я получить любую из этих двух опций для генерации таблиц базы данных каждый раз, когда я меняю модель (в визуальном конструкторе), чтобы мне не приходилось генерировать запросы и запускать их? Это значительно ускорило бы мой процесс разработки (по какой-то причине мне приходится отбрасывать таблицы вручную каждый раз, когда я меняю модель, поэтому это занимает много времени). Я знаю, что это можно сделать с помощью
  • Могу ли я иметь классы POCO в другом проекте? Я знаю, что это может быть купол с шаблонами T4, но возможно ли это с упрощенным API?
  • Можно ли аннотировать свойства в сгенерированных классах POCO без перезаписи каждый раз, когда они восстанавливаются из модели? (это действительно возможно при использовании подхода с первым кодом)
  • Есть ли разница в эффективности?

Если это имеет значение, любая выбранная технология будет использоваться в приложении ASP.NET MVC.


EDIT: Пожалуйста, ответьте на любой вопрос моего вопроса, если вы знаете ответ. Может быть, вместе с другим частичным ответом он даст мне информацию, которая мне нужна. Спасибо

1 Ответ

4 голосов
/ 23 марта 2011

EF 4.1 предоставляет упрощенный API, в основном прославленный благодаря тому, что первый подход к коду доступен в EF впервые. То, что вы описываете, - это первый подход модели.

Я уже ответил на аналогичный вопрос , но я постараюсь ответить на ваши индивидуальные вопросы:

  • Основным ограничением API DbContext является недостаток информации. Мы знаем новые функции, но мы все еще не знаем, как реализовать некоторые функции, доступные в API ObjectContext (упрощение, вероятно, удалило некоторые функции). Я не уверен, как это соотносится с первым приближением модели с помощью шаблона T4 генератора DbContext, потому что в этом случае отображение все еще определяется в файле EDMX, поэтому некоторые известные проблемы с отображением кода в первую очередь должны быть преодолены.
  • Генерация базы данных работает автоматически с DbContext API. API-интерфейс ObjectContext по умолчанию предлагает только генерацию сценариев БД, и вы должны выполнить сценарий. С другой стороны, если у вас VS 2010 Premium или Ultimate, вы можете загрузить Блок создания базы данных Entity Designer , который позволит вам постепенно наращивать базу данных, не удаляя ее каждый раз. В настоящее время это невозможно с DbContext API.
  • Вы можете иметь классы (шаблоны) POCO в другом проекте с обоими API.
  • Да, даже если шаблон T4 генерирует классы POCO , вы можете использовать аннотации .
  • Нет, нет никакой разницы в эффективности. DbContext API - это просто оболочка поверх ObjectContext API.
...