事实证明,这确实非常简单(只要您知道实现它的魔力)。
基于文档和一个看似误导性的帖子表明Dapper“包含”在剃须刀中我认为当暗示 Dapper 是“内置的”时,它本质上是包含的库的一部分。
如果你愿意的话,就笑吧,但是对于我们这些没有开悟的人,我将概述如何使 Dapper 扩展显示出来。这就是神奇之处。
使用包管理器控制台执行以下命令:
Install-Package ServiceStack
Install-Package Dapper
将以下 using 语句 (C#) 添加到您的服务中:
using ServiceStack.OrmLite;
using Dapper;
现在,当您利用 Db 对象时,所有 OrmLite 和 Dapper 方法都将在那里。
要获取输出参数,现在非常简单:
var p = new DynamicParameters();
p.Add("@param1", request.stuff1);
p.Add("@param2", request.stuff2);
p.Add("@param3", dbType: DbType.Int32, direction: ParameterDirection.Output);
Db.Execute("schema.sp_stored_proc_name", p, commandType: CommandType.StoredProcedure);
response.outputStuff = p.Get<int>("@param3");
为了管理 MARS(假设您有一个返回两个结果集和一个输出参数的 SP):
p.Add("@param1", request.stuff1);
p.Add("@param2", request.stuff2);
p.Add("@param3", dbType: DbType.Int32, direction: ParameterDirection.Output);
var mars = Db.QueryMultiple("schema.sp_stored_proc_name", p, commandType: CommandType.StoredProcedure);
//firstSet contains the first result set
var firstSet = mars.Read().ToList();
//secondSet contains the second result set
var secondSet = mars.Read().ToList();
response.outputStuff = p.Get<int>("param3");
一旦你了解了其中的魔力,它就非常简单了:)
这是一个更复杂的例子.
希望这可以帮助其他人并节省他们一些时间。