【问题标题】:Dapper Query Multiple Blank Result SetDapper 查询多个空白结果集
【发布时间】:2019-08-09 16:38:39
【问题描述】:

我需要能够判断 dapper 中的多个异步查询何时返回空白数据集(因此不返回任何行),但我不确定执行此操作的正确方法。

以下与我目前的代码类似:

var data= await db.QueryMultipleAsync(getDataProcedure, commandType: CommandType.StoredProcedure, param: parameters);

var table1Data = data.Read<table1Type>().First();
var table2Data = data.Read<table2Type>().First();

我想要做的是在table1Datatable2Data 变量周围放置一个if,这样只有在有数据填充它们时才会填充它们。

如果我需要进一步解释,请告诉我。

【问题讨论】:

    标签: c# dapper


    【解决方案1】:

    Dapper 返回IEnumerable&lt;T&gt; 集合,如果没有从数据库中读取任何行,则集合为空。所以你可以简单地使用FirstOrDefault 而不是First。如果没有返回行,它将导致null。 (最好是 default 用于您的数据类型 table1Type ,即 null 用于所有引用类型。)

    【讨论】:

      【解决方案2】:

      您应该使用Any。它将检查IEnumerable&lt;T&gt;是否有任何数据。

      var data= await db.QueryMultipleAsync(getDataProcedure, commandType: CommandType.StoredProcedure, param: parameters);
      
      if (data.Read<table1Type>().Any() && data.Read<table2Type>().Any())
      {
          ... // Do stuf with data
      }
      

      在我看来,它比FirstOrDefault()!=null更清楚地表明了意图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-16
        • 1970-01-01
        • 2015-02-07
        • 1970-01-01
        • 1970-01-01
        • 2021-09-28
        • 2012-03-30
        相关资源
        最近更新 更多