У меня есть такая модель данных в SQL Server:
table Note
- varchar NoteText
- tinyint PriorityLevel
В моем коде Entity Framework превращает ее в класс, подобный:
class Note
- string NoteText
- byte PriorityLevel
Также в коде, который у меня естьперечисление PriorityLevel, которое делает мой код более читабельным:
public enum PriorityEnum : byte
{
NORMAL = 10,
IMPORTANT = 20,
URGENT = 30
}
Итак, я хотел бы использовать это перечисление непосредственно с моими объектами Note, такими как myNote.PriorityLevel = PriorityEnum.NORMAL
, вместо того, чтобы постоянно выполнять приведение типа myNote.PriorityLevel = (byte)PriorityEnum.NORMAL
.
У меня уже есть решение с использованием объявления класса Partial
, но я получаю два свойства с одинаковыми именами, которые отображаются на базовый PriorityLevel, что является беспорядочным:
class Note
- string NoteText
- byte PriorityLevel
- PriorityEnum PriorityLevelEnum (gets/sets PriorityLevel)
Естественно, я хотел бы, чтобы мой класс EF определялся просто следующим образом:
class Note
- string NoteText
- PriorityEnum PriorityLevel
FYI Я использую генерацию POCO моих классов сущностей EF, поэтому я полагаю, что решение может включать изменение в шаблонах T4, которыегенерировать их, но я обеспокоен тем, что упускаю что-то простое.Я думаю, что может быть решение путем изменения определений полей в конструкторе EDMX, но я беспокоюсь, что они могут быть перезаписаны в следующий раз, когда я обновлю EDMX из определения базы данных.