Dapper MultiMap'序列不包含任何元素'

时间:2016-01-19 09:01:53

标签: c# sql-server dapper multi-mapping

处理“序列”的最佳方式是什么?序列不包含任何元素'异常?

我使用QueryMultiple映射SQL Server存储过程的(多个)结果,有时一个或多个结果集为空。目前我正在记录异常,但我想更好地处理它。

要获取结果集,请使用.ToSingle()ToList()

我使用包装器使映射代码更容易(我使用它超过100次)...

public static void ExecuteSprocDapperMulti(string name, DynamicParameters parameters, Action<SqlMapper.GridReader> action)
{
  DefaultTypeMap.MatchNamesWithUnderscores = true;
  using (IDbConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString))
  using (var multi = con.QueryMultiple(name, parameters, commandType: CommandType.StoredProcedure))
  {
    try
    {
      action(multi);
    }
    catch (Exception e)
    {
       LogError(e);
    }
  }
}

然后称之为

var p = new DynamicParameters(new { id });
ExecuteSprocDapperMulti('Get_Car', p, multi =>
{
   ro = multi.Read<Car>().ToSingle();
   ro.Wheels= multi.Read<Wheels>().ToList();
   ro.Nuts= multi.Read<Nuts>().ToList();
   ro.Bolts= multi.Read<Bolts>().ToList();
});

理想情况下,我想在ExecuteSpocDapperMulti内处理。

0 个答案:

没有答案