我有一个Dapper.NET QueryMultiple
方法的包装方法。它成功地从存储过程中获取数据,该存储过程具有3个查询,所有SELECT
查询均为查询。但是获取数据后,我无法使用Read
或ReadAsync
将数据分配给类变量。我在下面附上我的代码。
public Tuple, IEnumerable , IEnumerable > QueryMultiple () { try { var data = MultiQuery("[App].[USP_GetAllCategories]"); var category = data.Read (); var subcategory = data.Read (); var subSubcategory = data.Read (); return new Tuple , IEnumerable , IEnumerable >( 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); } } }
Marc Gravell.. 5
看你的MultiQuery
方法。特别要看一下该finally
块。现在考虑:在使用数据之前已调用该块。基本上,不要那样做。
如果是我:
using (var connection = LocalConnection()) uaing (var data = conn.QueryMultiple("[App].[USP_GetAllCategories]", command type: CommandType.StoredProcedure)) { //... Consume }
如果编写QueryMultipleSP
添加命令类型的扩展方法很有帮助,则可以这样做,但是...
看你的MultiQuery
方法。特别要看一下该finally
块。现在考虑:在使用数据之前已调用该块。基本上,不要那样做。
如果是我:
using (var connection = LocalConnection()) uaing (var data = conn.QueryMultiple("[App].[USP_GetAllCategories]", command type: CommandType.StoredProcedure)) { //... Consume }
如果编写QueryMultipleSP
添加命令类型的扩展方法很有帮助,则可以这样做,但是...