通过dapper[contrib]在具有默认值的可为null的布尔上检索null时出现问题



这可能有点边缘化,也许我对默认值在这种情况下如何工作的理解是错误的。

我遇到了一个问题,下面的属性总是返回为true,即使它在数据库中为null。我想这是由于默认值,但默认值不应该覆盖数据库中的内容——或者我是这么认为的。

模型的一部分。。

public bool? SolvedByCalldesk { get; set; } = true;

Dapper的一部分。Contrib调用。。

...
var returnTask = connection.GetAsync<T>(id);
//caching here
result = await returnTask;
...

我已经验证了有问题的DB记录是null,但"result"将其返回为true。这是我、dapper的问题,还是它如何处理可为null类型的默认值?

我在Dappers github:上收到了对此问题的响应

它确实按预期运行。您可以使用构造函数方法相反,如果您想重写行为(只需有一个构造函数与您要撤回的列相匹配(此处控制:(

因此,数据库中的任何null都将使用模型中的默认值,而不是数据库值(即使存在记录并且null是属性/字段的有效值(。

为什么这样处理是有道理的,但同时它也不是完全正确的i.m.o.

最新更新