首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法用Dapper调用存储过程?

有没有办法用Dapper调用存储过程?
EN

Stack Overflow用户
提问于 2011-05-11 17:35:52
回答 6查看 153.3K关注 0票数 222

stackoverflow.com的Dapper Micro ORM结果给我留下了非常深刻的印象。我正在考虑我的新项目,但我有一个担心,有时我的项目需要有存储过程,我在web上搜索了很多次,但没有找到任何存储过程。那么,有没有办法让Dapper使用存储过程呢?

如果可能的话,请让我知道,否则我不得不以我的方式扩展它。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-12 07:47:52

在简单的情况下,您可以这样做:

代码语言:javascript
复制
var user = cnn.Query<User>("spGetUser", new {Id = 1}, 
        commandType: CommandType.StoredProcedure).First();

如果你想要更花哨的东西,你可以这样做:

代码语言:javascript
复制
 var p = new DynamicParameters();
 p.Add("@a", 11);
 p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
 p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

 cnn.Execute("spMagicProc", p, commandType: CommandType.StoredProcedure); 

 int b = p.Get<int>("@b");
 int c = p.Get<int>("@c"); 

此外,您可以在批处理中使用exec,但这更加笨拙。

票数 381
EN

Stack Overflow用户

发布于 2011-05-11 17:54:29

我认为答案取决于您需要使用存储过程的哪些特性。

返回结果集的存储过程可以使用Query运行;不返回结果集的存储过程可以使用Execute运行-在这两种情况下(都使用EXEC <procname>)作为SQL命令(根据需要加上输入参数)。有关更多详细信息,请参阅documentation

从修订版2d128ccdc9a2开始,似乎没有对OUTPUT参数的本机支持;你可以添加这个,或者构造一个更复杂的Query命令,声明TSQL变量,执行SP将OUTPUT参数收集到本地变量中,最后在结果集中返回它们:

代码语言:javascript
复制
DECLARE @output int

EXEC <some stored proc> @i = @output OUTPUT

SELECT @output AS output1
票数 13
EN

Stack Overflow用户

发布于 2014-08-31 20:35:30

下面是从Store过程获取返回值的代码

存储过程:

代码语言:javascript
复制
alter proc [dbo].[UserlogincheckMVC]    
@username nvarchar(max),    
@password nvarchar(max)
as    
begin    
    if exists(select Username from Adminlogin where Username =@username and Password=@password)    
        begin        
            return 1  
        end    
    else    
        begin     
            return 0  
        end    
end 

代码:

代码语言:javascript
复制
var parameters = new DynamicParameters();
string pass = EncrytDecry.Encrypt(objUL.Password);
conx.Open();
parameters.Add("@username", objUL.Username);
parameters.Add("@password", pass);
parameters.Add("@RESULT", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);
var RS = conx.Execute("UserlogincheckMVC", parameters, null, null, commandType: CommandType.StoredProcedure);
int result = parameters.Get<int>("@RESULT");
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5962117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档