将dapper与存储的proc一起使用到列表

时间:2019-02-09 18:37:10

标签: c# asp.net-core

我正在使用dapper,我有一些可以与select语句一起使用的代码,但是我试图将其转换为使用存储的proc,dapper的文档化在异步方法上有点稀疏。所以我在这里尽力而为。

public async Task<ActivityHeader> GetAllActivityHeader()
{
     Task<ActivityHeader> _activityHeader= new List<ActivityHeader>();
     using (IDbConnection conn = Connection)
     {
         if (conn.State == ConnectionState.Closed)
          conn.Open();
          _activityHeader = await conn.Query<ActivityHeader>("GetActivityHeader").ToList();
      }
      commandType: CommandType.StoredProcedure);

            return _activityHeader.Result() ;
        }
    }

我如何使此方法对视图可兼容,并且还必须在视图端执行什么操作才能启用该功能?。

1 个答案:

答案 0 :(得分:1)

精致的部分需要像这样

public async Task<ActivityHeader> GetAllActivityHeader(CancellationToken cancellationToken)
{
      ....
      if (conn.State == ConnectionState.Closed)
           await conn.OpenAsync(cancellationToken);

      var activityHeaderTask = conn.QueryAsync<ActivityHeader>("GetActivityHeader", cancellationToken);
      var result = await activityHeaderTask.AsList()

      return result;
}

请注意,不包括使用部分。此外,需要conn.Open()才能await conn.OpenAsync(cancellationToken)