Создание перечислений из сущностей - PullRequest
2 голосов
/ 05 августа 2009

У меня есть таблицы с именами События и Журнал. Таблица событий содержит идентификатор, описание и тип события. Кроме того, журнал содержит LogID, EventID (относится к идентификатору из таблицы событий) и отметку времени.

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

Кто-нибудь создал перечисления, используя этот подход? Если это так, пожалуйста, поделитесь своими мыслями о дизайне для его создания.

Ответы [ 2 ]

2 голосов
/ 05 августа 2009

Возможно, но вам придется определить enum вручную.

Является ли это хорошим дизайном, зависит от количества различных событий, которые вы определяете, и когда. Можно ли создавать новые определения событий и не нужно менять свой код? В этом случае, enum, вероятно, будет плохой идеей. Если список идентификаторов событий является статическим и не слишком большим, тогда enum будет приемлемым и (на мой взгляд) даже поощряемым.

Редактировать: Мои извинения, решение, которое я предоставил, было на самом деле так, как оно было сделано в LINQ to SQL, а не в Entity Framework 1.0. Должно быть, нехватка кофе. То, как это делается в EF, состоит в том, чтобы определить правильно типизированное свойство в частичном классе.

Например, в моей базе данных есть столбец EventType, который я хочу сопоставить с enum. Я переименовал свойство из значения по умолчанию EventType в EventTypeInt, как показано ниже:

EventCalendar table mapping in model
(источник: subbot.net )

Затем вы устанавливаете свойства Getter и Setter для этого столбца на private (в окне диспетчера свойств, которое вы, вероятно, использовали для переименования EventType). Как только это будет сделано и сохранено, используйте следующий код:

public enum EventType
{
    Unknown = 0,
    Concert = 1,
    Festival = 2
}

public partial class EventCalendar
{
    public EventType EventType
    {
        get { return (EventType)EventTypeInt; }
        set { EventTypeInt = (int)value; }
    }
}

Да, это утомительно. Это было намного более практично в моделях LINQ to SQL.

0 голосов
/ 05 августа 2009

Вместо того, чтобы создавать ENUMS, вы рассматривали представление их как свойств навигации в наборах сущностей?

...