Есть ли способ динамически генерировать Enum в C #? - PullRequest
4 голосов
/ 09 июля 2011

В моем приложении есть две таблицы.

tblEvents

  • EventID
  • UserID
  • Дата
  • EventType

tblEventTypes

  • EventTypeID
  • EventName

tblEvents содержит журнал событий, которые произошли в нашем приложении.При добавлении события в журнал одним из столбцов является тип события.Тип события должен быть идентификатором типа события, хранящегося в tblEventTypes.

В моем приложении с использованием Entity Framework я создал импорт функции для хранимой процедуры, которая добавляет события в tblEvents.В настоящее время я передаю целое число для типа события в метод, созданный функцией import.Это просто кажется мне нечитаемым, поскольку вы понятия не имеете, что означает целое число, не глядя на базу данных, не найдя таблицу типов событий и не увидев, какое это было событие.

Я хотел бы создать перечисление для представления событиятипы.Есть ли способ создать динамическое перечисление, которое генерируется на основе данных в tblEventTypes?Так же, как EF генерирует сущности на основе таблиц в базе данных, я хотел бы создать перечисление на основе таблицы и ее текущих данных.Поэтому добавление типа события может быть связано с добавлением строки в tblEventTypes и последующим запуском обновления в конструкторе EF или чего-то, что автоматически обновит мое перечисление в коде.

Ответы [ 2 ]

3 голосов
/ 09 июля 2011

Вы не можете использовать конструктор EF для этого, но вы можете использовать шаблон T4 для генерации перечисления.

1 голос
/ 09 июля 2011

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

Public enum EventType
{
     Info = 100,
     Error = 200
 }

Я бы создал скрипт db, который создает элементы в базе данных и синхронизировал их вручную.

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

Насколько мне известно, EF не поддерживает моделирование записей сущностей, только схемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...