Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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.