首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Pomelo ORM传递MySQL内核.net存储过程的输出参数

如何使用Pomelo ORM传递MySQL内核.net存储过程的输出参数
EN

Stack Overflow用户
提问于 2020-02-20 14:00:24
回答 1查看 1.1K关注 0票数 1

这是我在MySQL中的SP

代码语言:javascript
复制
CREATE PROCEDURE `GetMemberID`(
   IN uname     VARCHAR(128),
   OUT MemberID     INT
)
BEGIN  
   SELECT ID INTO MemberID FROM `Member` Where username = uname;    
END

我正在调用使用Pomelo的.netcore web项目中的SP。

代码语言:javascript
复制
var usernameParam = new MySqlParameter
{ 
   ParameterName = $"@uname",
   DbType = DbType.String,
   Direction = ParameterDirection.Input,
   Value = "test"
 };
var memberIDParam = new MySqlParameter
{ 
   ParameterName = $"@MemberID",
   DbType = DbType.Int32,
   Direction = ParameterDirection.Output
 };

rContext.Database.ExecuteSqlRaw($"Call GetMemberID (@uname=@uname, @MemberID=@MemberID OUT)"
            , usernameParam , memberIDParam);

当使用输出参数时,我将得到以下错误。

当ParameterDirection.Input是文本时,只支持CommandType (参数名:@MemberID)

如何传递输出参数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-21 09:15:52

这是github中的一个已知的问题,就像mguinness评论的那样

‘t不指定CommandType,因此它默认为CommandType.Text,这意味着输出参数不能工作。

这里有一个解决办法,您可以参考

代码语言:javascript
复制
 using (MySqlConnection lconn = new MySqlConnection(Configuration.GetConnectionString("DefaultConnection")))                
            {
                lconn.Open();
                using (MySqlCommand cmd = new MySqlCommand())
                {
                    cmd.Connection = lconn;
                    cmd.CommandText = "GetMemberID"; // The name of the Stored Proc
                    cmd.CommandType = CommandType.StoredProcedure; // It is a Stored Proc

                    cmd.Parameters.AddWithValue("@uname", "sherry");
                    cmd.Parameters.Add("@MemberID", MySqlDbType.Int32);
                    cmd.Parameters["@MemberID"].Direction = ParameterDirection.Output; // from System.Data
                    cmd.ExecuteNonQuery();
                    Object obj = cmd.Parameters["@MemberID"].Value;
                    var lParam = (Int32)obj;    // more useful datatype

                }
            }

参考资料:如何使用mysql调用带有输入和输出参数的实体框架核心中的存储过程

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60321681

复制
相关文章

相似问题

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