hai*_*zal 5 c# dapper asp.net-web-api2
我有一个Dapper.NET QueryMultiple方法的包装方法。它成功地从存储过程中获取数据,该存储过程具有3个查询,所有SELECT查询均为查询。但是获取数据后,我无法使用Read或ReadAsync将数据分配给类变量。我在下面附上我的代码。
public Tuple<IEnumerable<T1>, IEnumerable<T2>, IEnumerable<T3>>
QueryMultiple<T1, T2, T3>()
{
try
{
var data = MultiQuery("[App].[USP_GetAllCategories]");
var category = data.Read<T1>();
var subcategory = data.Read<T2>();
var subSubcategory = data.Read<T3>();
return new Tuple<IEnumerable<T1>, IEnumerable<T2>, IEnumerable<T3>>(
category, subcategory, subSubcategory);
}
catch (Exception)
{
return null;
}
}
public SqlMapper.GridReader MultiQuery(string storedProcedureName)
{
using (var connection = LocalConnection())
{
try
{
return connection.QueryMultiple(
sql: storedProcedureName,
commandType: CommandType.StoredProcedure);
}
catch (Exception)
{
return null;
}
finally
{
CloseConnection(connection);
}
}
}
Run Code Online (Sandbox Code Playgroud)
看你的MultiQuery方法。特别要看一下该finally块。现在考虑:在使用数据之前已调用该块。基本上,不要那样做。
如果是我:
using (var connection = LocalConnection())
uaing (var data = conn.QueryMultiple("[App].[USP_GetAllCategories]",
command type: CommandType.StoredProcedure))
{
//... Consume
}
Run Code Online (Sandbox Code Playgroud)
如果编写QueryMultipleSP添加命令类型的扩展方法很有帮助,则可以这样做,但是...
| 归档时间: |
|
| 查看次数: |
1231 次 |
| 最近记录: |