мой первый вопрос здесь, поэтому я постараюсь изо всех сил.
Я создаю модель БД с EF6, сначала кодирую базу данных с такой моделью:
public MyModel
{
[Column("MyDbColumn")]
public MyEnum MyProp { get; set; }
}
public enum MyEnum
{
Value1 = 1,
Value2 = 2
}
Это должен работать нормально, когда поле базы данных установлено в целое число или что-то вроде этого. Но я работаю с базой данных провайдера, к которой у меня нет доступа, и в поле задано пользовательский тип данных, который наследуется от numeric (3, 0)
, поэтому я получаю сообщение об ошибке:
Указанное приведение из материализованного типа System.Decimal к типу MyNamespace.MyEnum недопустимо.
Я знаю, что могу настроить свою модель следующим образом:
public MyModel
{
[Column("MyDbColumn")]
private decimal myProp;
public MyEnum MyProp {
get => (MyEnum)myProp;
set => myProp = (decimal)value;
}
Но дело в том, что у меня есть много моделей, в которых уже настроены перечисления, поэтому я бы хотел более простой подход, например: a) изменить отображение EF с десятичного на int, чтобы я мог использовать встроенную поддержку использовать enum или b) объявить enum как десятичное, что я не знаю, возможно ли это вообще.