如何将空值从数据库转换为DbSet,然后再转换回Entity Framework?

时间:2019-01-28 21:01:25

标签: entity-framework entity-framework-6

我有一个数据库,该数据库已用于将可为空的ThingType?枚举存储为整数值:

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

但这意味着自定义代码可以在我项目的其他地方容纳空值。我想将我的枚举修改为ThingType的“未指定”值,如下所示:

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

什么是在EF中实现此转换而不更改数据库的最佳方法,以便将null行值转换为ThingType.NotSpecified并将ThingType.NotSpecified作为{{1 }}值?

1 个答案:

答案 0 :(得分:0)

使用第二个属性

// 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; }