“QueryFirstOrDefault<T>”和“ExecuteScalar<T>”之间有什么区别?

Sup*_*Bob 2 c# dapper

QueryFirstOrDefault<T>在 Dapper 中,和的用法有什么区别ExecuteScalar<T>

两者似乎都返回单个值,但QueryFirstOrDefault<T>如果未找到,则会返回该类型的默认值。由于性能或其他原因,您是否应该始终更喜欢使用两者之一,或者它们是否等效,而忽略返回的默认值?

Nés*_*eno 6

主要区别在于它们的回报:

ExecuteScalar<T>正如其他用户所说,仅返回结果集的第一个单元格。

  • 的返回类型ExecuteScalar<T>是 generic <T>,它会自动将结果转换为您指定的类型<T>

QueryFirstOrDefault<T>执行查询并返回您在 上指定的数据类型<T>

  • 如果指定的类型是基本类型(字符串、整数等),则它仅返回第一列中的数据。

  • 如果指定的类型是对象,则为结果集的每一行创建该对象的实例。请注意,假定直接列名 === 成员名映射,并且不能使用自定义映射器,因此如果您的对象具有与结果集的列不同的字段名称,则不会获取任何值。