Как перевести нулевые значения из базы данных в DbSet и обратно в Entity Framework? - PullRequest
0 голосов
/ 29 января 2019

У меня есть база данных, которая использовалась для хранения nullable ThingType? enum в виде целочисленных значений:

public enum ThingType
{
    Good = 0,
    Bad = 1,
    Annoying = 2,
}

Но это означало, что пользовательский код для размещения нулевых значений в других местах моего проекта.Я хочу изменить свой enum, чтобы он имел значение «Не указано» для ThingType, как определено ниже:

public enum ThingType
{
    NotSpecified = -1,
    Good = 0,
    Bad = 1,
    Annoying = 2,
}

Каков наилучший способ реализовать этот перевод в EF без внесения изменений в базу данных, поэтомучто null значения строки преобразуются в ThingType.NotSpecified, а ThingType.NotSpecified вставляется как значение null?

1 Ответ

0 голосов
/ 29 января 2019

Использовать второе свойство

// Map this one to DB
public ThingType? ThingTypeDb
{
    get { return ThingType == ThingType.NotSpecified ? (ThingType?)null : ThingType; }
    set { ThingType = value == null ? ThingType.NotSpecified : value.Value; }
}

// Don't map this one. Use it in your logic
public ThingType ThingType { get; set; }
...