在C#中将等待关键字放在存储过程中的何处

Iba*_*408 4 .net c# stored-procedures async-await

我想实现一个async功能。我的问题是;我不知道将等待关键字放在下面的代码中:

public async Task<List<ManualReadTag>> GetManuallyReadTags(ParameterManualTags model)
{
    var db = new ApplicationDbContext();
    using (var cnxn = db.Database.Connection)
    {
        cnxn.Open();

        var cmd = cnxn.CreateCommand();
        cmd.CommandText = "GetManualReadForDedicated";
        cmd.CommandType = CommandType.StoredProcedure;

        var dtFrom = cmd.CreateParameter();
        dtFrom.ParameterName = "@DateFrom";
        dtFrom.DbType = DbType.Date;
        dtFrom.Direction = ParameterDirection.Input;
        dtFrom.Value = model.DateFrom;

        var dTo = cmd.CreateParameter();
        dTo.ParameterName = "@DateTo";
        dTo.DbType = DbType.Date;
        dTo.Direction = ParameterDirection.Input;
        dTo.Value = model.DateTo;

        var lane = cmd.CreateParameter();
        lane.ParameterName = "@Lane";
        lane.DbType = DbType.Int32;
        lane.Direction = ParameterDirection.Input;
        lane.Value = model.Lane;

        var plaza = cmd.CreateParameter();
        plaza.ParameterName = "@Plaza";
        plaza.DbType = DbType.String;
        plaza.Direction = ParameterDirection.Input;
        plaza.Value = model.Plaza;

        cmd.Parameters.Add(dtFrom);
        cmd.Parameters.Add(dTo);
        cmd.Parameters.Add(lane);
        cmd.Parameters.Add(plaza);

        try
        {
            using (var reader = cmd.ExecuteReader())
            {
                var result = ((IObjectContextAdapter) db)
                    .ObjectContext
                    .Translate<ManualReadTag>(reader)
                    .ToList();
                return result;
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            MessageBox.Show(ex.Message);
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码有效,我只需要将int await关键字放入就可以使用async。您能指出正确的方法吗?

Sal*_*ari 13

您可以尝试ExecuteReaderAsync

await cmd.ExecuteReaderAsync()
Run Code Online (Sandbox Code Playgroud)