Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在异步控制器中使用Dapper?_C#_Asp.net Mvc_Asynchronous_Asp.net Mvc 5 - Fatal编程技术网

C# 如何在异步控制器中使用Dapper?

C# 如何在异步控制器中使用Dapper?,c#,asp.net-mvc,asynchronous,asp.net-mvc-5,C#,Asp.net Mvc,Asynchronous,Asp.net Mvc 5,这是我第一次在Dapper ORM中使用async/await。我一直收到这样的信息,我的控制器缺少wait方法。如何在代码中正确插入wait方法 public async Task<ActionResult> index(int? page) { if (page == null) { page = 1; ViewBag.page = page; } else { ViewBag.page

这是我第一次在Dapper ORM中使用async/await。我一直收到这样的信息,我的控制器缺少wait方法。如何在代码中正确插入wait方法

public async Task<ActionResult> index(int? page)
{

    if (page == null)
    {
        page = 1;
        ViewBag.page = page;
    }
    else
    {

        ViewBag.page = page;
    }
    string Connectionstring = ConfigurationManager.ConnectionStrings["mycontext"].ConnectionString;
    using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
    {

        sqlConnection.Open();
        var sqlM = @"SELECT * from threads order by activities desc";
        var resultM = sqlConnection.Query<thread>(sqlM).ToList();
        await Task.WhenAll(resultM);
        return View(new homepage { panel = resultM });
    }


}
公共异步任务索引(int?页)
{
如果(第==null页)
{
page=1;
ViewBag.page=页面;
}
其他的
{
ViewBag.page=页面;
}
string Connectionstring=ConfigurationManager.Connectionstring[“mycontext”]。Connectionstring;
使用(System.Data.SqlClient.SqlConnectionSqlConnection=new System.Data.SqlClient.SqlConnection(Connectionstring))
{
sqlConnection.Open();
var sqlM=@“按活动顺序从线程中选择*”;
var resultM=sqlConnection.Query(sqlM.ToList();
等待任务。WhenAll(resultM);
返回视图(新主页{panel=resultM});
}
}

我尝试了
等待任务。WhenAll(resultM)但它没有改变任何东西。

您收到警告,因为您没有在控制器中使用任何异步方法。实际上,没有理由将其标记为
async

为了使方法真正异步,您需要使用Dapper的异步方法并等待它们。另一个例子见

在您的代码中,它看起来像:

public async Task<ActionResult> index(int? page)
{

    if (page == null)
    {
        page = 1;
        ViewBag.page = page;
    }
    else
    {

        ViewBag.page = page;
    }

    string Connectionstring = ConfigurationManager.ConnectionStrings["mycontext"].ConnectionString;
    using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
    {
        await sqlConnection.OpenAsync();

        var sqlM = @"SELECT * from threads order by activities desc";
        var resultM = await sqlConnection.QueryAsync<thread>(sqlM);

        return View(new homepage { panel = resultM });
    }
}
公共异步任务索引(int?页)
{
如果(第==null页)
{
page=1;
ViewBag.page=页面;
}
其他的
{
ViewBag.page=页面;
}
string Connectionstring=ConfigurationManager.Connectionstring[“mycontext”]。Connectionstring;
使用(System.Data.SqlClient.SqlConnectionSqlConnection=new System.Data.SqlClient.SqlConnection(Connectionstring))
{
等待sqlConnection.OpenAsync();
var sqlM=@“按活动顺序从线程中选择*”;
var resultM=await-sqlConnection.QueryAsync(sqlM);
返回视图(新主页{panel=resultM});
}
}

如果
resultM
必须是
列表而不是
IEnumerable
,您可以调用
ToList
——但请确保它在等待异步调用后

@user1591668没问题!让我知道它是否适合你。