Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 甲骨文及;EF Core Booltotwo值转换器未转换_Oracle_Ef Core 2.2_Valueconverter - Fatal编程技术网

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);