2014-10-25 1 views
0

У меня есть проект с использованием Entityframework Code First. И модель содержит несколько перечислений, которые я хочу сгенерировать из базы данных, используя текстовый шаблон T4.Как выполнить шаблон T4 для генерации перечислений в Entity Framework Code Сначала

Но я столкнулся с некоторыми проблемами:

  • Если база данных еще не существует, не будет генерироваться не перечислений;
  • Если база данных существует, как запустить шаблон T4?
  • И как мне получить перечисления в базе данных перед запуском шаблона T4?

Кто-нибудь сделал это раньше и преодолел эти проблемы?

+0

какая версия Entity Framework вы используете? EF 5 и более поздние версии встроены в поддержку типов данных enum без необходимости T4. – Claies

+0

У меня последняя стабильная версия, 6.1.2 IIRC. Но то, что вы сказали, верно, но мне нужны они как таблицы поиска в базе данных. – Quoter

+0

см. Также http://stackoverflow.com/q/11167665/10245 –

ответ

2

Существует пакет NUGET, который обрабатывает случай, который вы пытаетесь решить, ef-enum-to-lookup. Documentation.

Запустите EnumToLookup.Apply() из вашего метода Seed в инициализаторе базы данных или в ваших EF Migrations.

Этот пакет создает таблицы поиска и ограничения внешнего ключа на основе enums, используемых в вашей модели. В отличие от поддержки Entity Framework по умолчанию, вам не нужно создавать DBSet<T> для ваших классов enum, который отображает enum значениям int.

+1

Черт, это выглядит великолепно! Он также обрабатывает коллекцию перечислений? Я посмотрел образец проекта, я не видел никакой коллекции перечислений вообще в классе сущности. – Quoter

+1

, по моему опыту, он обрабатывает любое перечисление, на которое ссылается объект сущности, либо напрямую, либо через коллекции. однако вы обязательно захотите проверить создаваемую схему. – Claies

+0

Я пойду за этим, спасибо! – Quoter