EF6存储过程不接受参数

时间:2015-12-15 08:40:52

标签: c# sql stored-procedures entity-framework-6

我正在使用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.

什么可能导致这个问题?我传递了这个参数,为什么它不接受它?

2 个答案:

答案 0 :(得分:2)

这应该有效:

_dbContext.Database.ExecuteSqlCommand("exec GetInfo @mIIN, @mXMLContent OUTPUT", iinParameter, outputParameter);

答案 1 :(得分:0)

我认为问题出在您的子程序中。 日志消息告知该参数已提供给GetInfo,并且错误与子过程IBRC_GetClientInfo相关。检查你的程序里面的参数是否正确通过。