Nic*_*ckG 5 c# sql-server orm dapper
我是第一次尝试使用Dapper,但是我立即遇到了问题,因为似乎Dapper似乎不能处理可空字段.这让我感到非常惊讶,因为这些非常普遍.
如果我的SQL Server数据库中有一个可以为空的布尔字段并尝试使用Dapper来填充我的C#类上的可空布尔属性,则如果布尔字段包含空值,则抛出异常:
System.FormatException: String was not recognized as a valid Boolean.
Run Code Online (Sandbox Code Playgroud)
这有什么修复或解决方法吗?我发现很难相信Dapper无法处理它,因为它看起来已经存在了一段时间,这是一个非常基本的功能.
编辑:这是我的错!我的专栏实际上是一个nvarchar,碰巧包含0或1,因此我没有注意到.将它更改为BIT(或将C#属性更改为"string?")可以解决问题.
是的,工作得很好:
public void SO24607639_NullableBools()
{
var obj = connection.Query<HazBools>(
@"declare @vals table (A bit null, B bit null, C bit null);
insert @vals (A,B,C) values (1,0,null);
select * from @vals").Single();
obj.IsNotNull();
obj.A.Value.IsEqualTo(true);
obj.B.Value.IsEqualTo(false);
obj.C.IsNull();
}
class HazBools
{
public bool? A { get; set; }
public bool? B { get; set; }
public bool? C { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2836 次 |
| 最近记录: |