У меня есть класс сущности, который имеет свойство с базовым столбцом db типа данных Int, однако на самом деле я хочу, чтобы это свойство было Enum. Есть ли способ указать, что это свойство возвращает Enum?
Как заменить свойство Int на Enum в Entity Framework?
Ответ 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.