我正在将Dapper与asp.net核心一起使用,并且尝试启用多个活动结果
有人设法使用Dapper启用MARS吗?
我试图附加到连接"MultipleActiveResultSets=True"
,但没有任何效果。
Enabling Multiple Active Result Sets
我得到的错误是
InvalidOperationException:连接不支持 MultipleActiveResultSets
答案 0 :(得分:6)
Dapper与MARS仅有的一点联系是使用重叠的异步API通过ExecuteAsync
发出多个进行中的操作,并通过配置{告诉您要 Pipelined
上的{1}}至true
。除此之外:Dapper 不在乎。如果您在连接上启用它:它将被启用;如果您不这样做:不会。没有MARS不能正常工作的关键是:使用 unbuffered 查询(CommandDefinition
),然后在该查询中 发出附加操作。但这通常可以通过以下方法避免:不这样做。您还可以在连接字符串上启用MARS,但坦率地说,我通常建议反对。
因此:对于启用Query<T>(...buffered: false)
的{{1}},Dapper没有与MARS 有关的显式控件。
答案 1 :(得分:2)
MultipleActiveResultSets=True
是一个ADO.Net配置,与Dapper无关,它旨在对单个活动连接执行重叠的批处理操作,请检查link以获取更多信息。 / p>
如果您的目标是一次执行即可接收多个结果集,那么这与MARS无关,并且默认情况下处于启用状态。使用Dapper进行操作,您需要使用QueryMultiple
来获取GridReader
,这可以帮助获取多个结果集,请检查Dapper Query Multiple。在普通的ADO.Net中,出于相同的目的,您需要对连接的体系结构使用DataReader.NextResult
,对于断开的体系结构使用数据集来获取多个结果集