Oracle 甲骨文及;EF Core Booltotwo值转换器未转换
我创建了一个简单的Oracle 甲骨文及;EF Core Booltotwo值转换器未转换,oracle,ef-core-2.2,valueconverter,Oracle,Ef Core 2.2,Valueconverter,我创建了一个简单的booltotowaluesConverter,因此当数据库列中有-1时,它将转换为false,而0将转换为true: var falseNegOneTrueZero=新booltotowValuesConverter(-1,0); 我已将我的属性映射到该转换器: modelBuilder.Entity(Entity=> { Property(e=>e.iswhere) .HasColumnName(“神秘的颜色”) .HasColumnType(编号(1,0)) .HasC
booltotowaluesConverter
,因此当数据库列中有-1
时,它将转换为false
,而0
将转换为true
:
var falseNegOneTrueZero=新booltotowValuesConverter(-1,0);
我已将我的属性映射到该转换器:
modelBuilder.Entity(Entity=>
{
Property(e=>e.iswhere)
.HasColumnName(“神秘的颜色”)
.HasColumnType(编号(1,0))
.HasConversion(假负零);
//等等。。。
}
//在查询中使用属性的示例
返回摘要。其中(s=>s.iswhates);
但是,每当我试图在查询中使用该列时,它都会遇到困难:
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
执行请求时发生未经处理的异常。
System.InvalidCastException:无法将类型为“System.Int32”的对象强制转换为类型为“System.Boolean”。
在Oracle.EntityFrameworkCore.Storage.Internal.OracleBoolTypeMapping.GenerateNonullSqlLiteral(对象值)中
位于Microsoft.EntityFrameworkCore.Query.Sql.DefaultQuerySqlGenerator.VisitConstant(ConstantPression ConstantPression)
我还尝试了“详细”的方式,指定了如下转换:
entity.Property(e=>e.iswhere)
.HasColumnName(“神秘的颜色”)
.HasColumnType(编号(1,0))
.哈斯转换(
//0为真,-1为假
entityValue=>entityValue?0:-1,
dbValue=>dbValue==0);
…没用。我的想法快用完了,非常感谢您的帮助。删除
.HasColumnType()
语句使问题消失。我不喜欢它,但它起到了作用:
entity.Property(e => e.IsWhatever)
.HasColumnName("CRYPTIC_COL_NM")
.HasConversion(falseNegOneTrueZero);