Как заменить свойство Int на Enum в Entity Framework?

Asked
Viewd5429

11

У меня есть класс сущности, у которого есть свойство с нижележащим столбцом db с типом данных Int, однако на самом деле я хочу, чтобы это свойство было Enum. Есть ли способ указать, что это свойство возвращает Enum?

1 ответов

10

Косвенно, например так .

Лично я оставляю хранилище int общедоступным (например, DbFoo, где свойство enum равно Foo) - таким образом я все еще могу писать лямбда-выражения для столбца для выполнения в БД, например:

 where row.DbFoo == SomeConstant
 

Если не раскрыть значение хранилища, вы не сможете сделать это так чисто. Вы также можете оставить его внутренним и иметь некоторые методы в контексте для фильтрации ... вот один, который я написал сегодня сегодня:

 public IOrderedQueryable<User> Administrators
{
    get { return Users.Where(x => x.DbUserType == User.UserTypeAdmin)
             .OrderBy(x => x.Name);
}
 

где User.UserTypeAdmin - моя внутренняя константа. В этом случае я не мог использовать выделенный подкласс, поскольку он мешал работе служб данных ADO.NET.

  • Я использую тот же метод, и он отлично работает. Так будет до тех пор, пока EFF не будет поддерживать перечисления по умолчанию…

    hminaya25 октября 2009, 20:01