Использовать enum в модели EF с десятичным полем базы данных - PullRequest
1 голос
/ 29 января 2020

мой первый вопрос здесь, поэтому я постараюсь изо всех сил.

Я создаю модель БД с 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 как десятичное, что я не знаю, возможно ли это вообще.

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