C# Dapper将具有null值的可为null的Oracle数据库列映射为默认值(T),而不是null
我正在使用Dapper包装对Oracle存储过程的调用。我映射到的许多模型都具有C# Dapper将具有null值的可为null的Oracle数据库列映射为默认值(T),而不是null,c#,oracle,ado.net,dapper,C#,Oracle,Ado.net,Dapper,我正在使用Dapper包装对Oracle存储过程的调用。我映射到的许多模型都具有int?属性,因为它们表示返回游标中可能为空的列 我的方法有两个问题 Dapper认为OracleNumbers是decimals,具有0精度,而不是ints。几乎在所有情况下,我的数据库中的数字都意味着int或int?而不是decimal或decimal? Dapper并不总是“尊重”目标模型属性的可空性 当存储过程返回一个指针TSomeType,其属性为decimal时?SomeColumn和至少有一个返回行的S
int?
属性,因为它们表示返回游标中可能为空的列
我的方法有两个问题
Number
s是decimal
s,具有0
精度,而不是int
s。几乎在所有情况下,我的数据库中的数字
都意味着int
或int?
而不是decimal
或decimal?
TSomeType
,其属性为decimal时?SomeColumn
和至少有一个返回行的SomeColumn
具有值,它将所有返回列的null
值的行映射到0
,而不是我所希望的null
我尝试编写一个定制的ITypeMap
,它可以应用于所有模型,将DbNull
映射到null
,而不是default(T)
,因为接口的编写方式不利于列的全局转换,而是转换到特定类型
感谢您的帮助