Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Asp.net mvc 使用dapper.net的存储过程比EF慢_Asp.net Mvc_Entity Framework_Stored Procedures_Dapper - Fatal编程技术网

Asp.net mvc 使用dapper.net的存储过程比EF慢

Asp.net mvc 使用dapper.net的存储过程比EF慢,asp.net-mvc,entity-framework,stored-procedures,dapper,Asp.net Mvc,Entity Framework,Stored Procedures,Dapper,我一直在用dapper.net取代实体框架和LINQ查询,作为数据访问的一种手段,并取得了巨大的成功,我看到了速度的真正提高。但是,当我尝试对存储过程执行相同的操作时,结果正好相反,每次都会出现超时过期错误: 存储过程本身没有改变,所以这显然不是问题所在,只需说它返回两个结果集:数据和行数。它用于填充jquery数据表。这是用于调用proc的代码: public DapperQueryMultipleModel GetStockCatalogueDatatable_WIP(DatatableFi

我一直在用dapper.net取代实体框架和LINQ查询,作为数据访问的一种手段,并取得了巨大的成功,我看到了速度的真正提高。但是,当我尝试对存储过程执行相同的操作时,结果正好相反,每次都会出现
超时过期
错误:

存储过程本身没有改变,所以这显然不是问题所在,只需说它返回两个结果集:数据和行数。它用于填充jquery数据表。这是用于调用proc的代码:

public DapperQueryMultipleModel GetStockCatalogueDatatable_WIP(DatatableFilterModel model)
{
    DapperQueryMultipleModel returnModel = new DapperQueryMultipleModel();

    var p = new DynamicParameters();
    p.Add("@storeId", model.Store);
    // more params..
    p.Add("@TotalRowsCount", dbType: DbType.Int32, direction: ParameterDirection.Output);

    using (var connection = _context.Database.Connection)
    {
        using (var multi = connection.QueryMultiple("dbo.StockCatalogueDatatable", p, commandType: CommandType.StoredProcedure))
        {
           returnModel.TableData = multi.Read<dynamic>().ToList();
           returnModel.RowCount = multi.Read<int>().Single();
        }
     }
     return returnModel;
}
public-DapperQueryMultipleModel GetStockCategureDataable_WIP(DatatableFilterModel模型)
{
DapperQueryMultipleModel returnModel=新的DapperQueryMultipleModel();
var p=新的动态参数();
p、 添加(“@storeId”,model.Store);
//更多参数。。
p、 添加(“@TotalRowsCount”,dbType:dbType.Int32,方向:ParameterDirection.Output);
使用(var connection=_context.Database.connection)
{
使用(var multi=connection.QueryMultiple(“dbo.stockcategatedatable”,p,commandType:commandType.StoredProcedure))
{
returnModel.TableData=multi.Read().ToList();
returnModel.RowCount=multi.Read().Single();
}
}
回归模型;
}

我做错了什么吗?

您有更多的QueryMultiple案例吗?是的,我经常使用QueryMultiple,但总是使用查询字符串,而不是SP。我将动态返回类型更改为类,这做了很大的改进。您有更多的QueryMultiple案例吗?是的,我经常使用QueryMultiple,但总是使用查询字符串,不是SP。我将动态返回类型更改为类,这做了很大的改进。