C# 实体框架类型转换问题

C# 实体框架类型转换问题,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我有这个实体: public class ResourceConfigPool { public int ResourceId { get; set; } public bool TabOrder { get; set; } } SQL Server表: 列TABORDER char1 请求: var tabOrder = _uow.Repository<ResourceConfigPool>().Get() .Wh

我有这个实体:

public class ResourceConfigPool
{
    public int ResourceId { get; set; }
    public bool TabOrder { get; set; }
}     
SQL Server表:

列TABORDER char1

请求:

var tabOrder = _uow.Repository<ResourceConfigPool>().Get()
                    .Where(cf => cf.ResourceId == id)
                    .Select(cf => cf.TabOrder)
                    .SingleOrDefault(); 
我得到了这个错误:

从物化的“System.String”类型到“System.Boolean”类型的指定强制转换无效

问题:如何解决此问题

PS:我无法更改SQL Server端


提前感谢:

因为您不能从SQL server端更改任何内容,所以可以尝试创建另一个属性来转换字符串的值。例如:

public class ResourceConfigPool
{
    public int ResourceId { get; set; }
    public string TabOrder { get; set; }
    public bool TabOrderBool 
    { 
        get { return TabOrder == "1"; } // or "Y"
    }
}  
然后从新添加的属性中查询:

var tabOrder = _uow.Repository<ResourceConfigPool>().Get()
                    .Where(cf => cf.ResourceId == id)
                    .Select(cf => cf.TabOrderBool)
                    .SingleOrDefault();

为什么要将数据库中的字符映射到模型中的布尔?你不是错了吗?我认为错误信息非常清楚……如果TABORDER是char1,它将映射到字符串。你不能把它映射到一个布尔。字母Z会翻译成什么?如果您想将一些字符值转换为布尔值,或者在代码中进行转换,甚至转换为只读属性,那么您的答案是完美的,但是否可以使用EntityTypeConfiguration转换类型,或者创建自己的Fluetn运算符???