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运算符???