Как заменить свойство Int на Enum в Entity Framework? - PullRequest
11 голосов
/ 09 декабря 2008

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

1 Ответ

10 голосов
/ 09 декабря 2008

Косвенно, как так .

Лично я оставляю хранилище 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 Data Services.

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