我需要能够判断dapper中的多个异步查询何时返回空数据集(因此不返回任何行),但是我不确定这样做的正确方法。
以下类似于我当前的代码:
var data= await db.QueryMultipleAsync(getDataProcedure, commandType: CommandType.StoredProcedure, param: parameters);
var table1Data = data.Read<table1Type>().First();
var table2Data = data.Read<table2Type>().First();
我想要做的是在table1Data
和table2Data
变量周围放置一个if,以便只有在有数据填充时才填充它们。
如果需要进一步说明,请告诉我。
答案 0 :(得分:2)
Dapper返回IEnumerable<T>
集合,如果没有从数据库中读取任何行,则该集合为空。因此,您可以简单地使用FirstOrDefault
而不是First
。如果没有返回行,它将导致null
。 (最好说的是,您的数据类型default
将是table1Type
,而所有引用类型将是null
。)
答案 1 :(得分:0)
您应该使用Any
。它将检查IEnumerable<T>
是否有任何数据。
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
更清晰。