我正在使用EF6,我需要执行存储过程。它需要两个参数:
mIIN varchar(12)
,即输入字符串mXMLOutput varchar(max)
,这是执行的结果当我从Management Studio调用它时,它工作正常。
但是,当我使用以下代码时:
var iinParameter = new SqlParameter("@mIIN", SqlDbType.VarChar, 12) { Value = "123456123456" };
var outputParameter = new SqlParameter("@mXMLContent", SqlDbType.VarChar, -1) { Direction = ParameterDirection.Output };
_dbContext.Database.ExecuteSqlCommand("GetInfo", iinParameter, outputParameter);
导致错误
程序或功能' GetInfo'期望参数' @ mIIN',未提供
EF6包含以下消息:
Started transaction at 15.12.2015 14:27:27 +06:00
GetInfo
-- @mIIN: '123456123456' (Type = AnsiString, IsNullable = false, Size = 12)
-- @mXMLContent: '' (Type = AnsiString, Direction = Output, IsNullable = false, Size = -1)
-- Executing at 15.12.2015 14:27:27 +06:00
-- Failed in 2 ms with error: Procedure or function 'GetInfo' expects parameter '@mIIN', which was not supplied.
什么可能导致这个问题?我传递了这个参数,为什么它不接受它?
答案 0 :(得分:2)
这应该有效:
_dbContext.Database.ExecuteSqlCommand("exec GetInfo @mIIN, @mXMLContent OUTPUT", iinParameter, outputParameter);
答案 1 :(得分:0)
我认为问题出在您的子程序中。
日志消息告知该参数已提供给GetInfo
,并且错误与子过程IBRC_GetClientInfo
相关。检查你的程序里面的参数是否正确通过。