Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 当通过Database.SqlQuery调用存储过程时,实体框架出现错误_Entity Framework_Entity Framework 6 - Fatal编程技术网

Entity framework 当通过Database.SqlQuery调用存储过程时,实体框架出现错误

Entity framework 当通过Database.SqlQuery调用存储过程时,实体框架出现错误,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,当使用int类型的参数和值0调用存储过程时,Entity Framework会向服务器发送空值 var requiredIntParameter = new SqlParameter("RequiredInt", 0); var tableParameter = new SqlParameter("@Table", System.Data.SqlDbType.Structured); ... table creation .... List<ReturnType> result =

当使用int类型的参数和值0调用存储过程时,Entity Framework会向服务器发送空值

var requiredIntParameter = new SqlParameter("RequiredInt", 0);
var tableParameter = new SqlParameter("@Table", System.Data.SqlDbType.Structured);
... table creation ....
List<ReturnType> result = DBContext.Database.SqlQuery<ReturnType>("EXEC NAMEOFSPROC "
           + "@RequiredInt, "
           + "@Table, "
           requiredIntParameter ,
           tableParameter,
           );
结果异常:

未提供参数化查询“(@requiredit int”需要参数@requiredit”)

注意:由于存储过程有一个表参数

((IObjectContextAdapter)this).ObjectContext.ExecuteFunction
这不是我的选择

使用:

  • 环境足迹6.2.0
  • SQL Server 2008
有一个解决办法:

var requiredIntParameter = new SqlParameter("RequiredInt", typeof(int)); 
requiredIntParameter.Value = 0;
现在日志是

EXECSPROC @RequiredInt, @Table
-- RequiredInt: '0' (Type = Int32, IsNullable = false)
-- @Table: '' (Type = Object, IsNullable = false)
-- Executing at 1/10/2018 4:42:09 PM +01:00
--在40毫秒内完成,结果为:SqlDataReader


一切都很好

看起来缺少@before RequiredInt参数。该错误并不意味着传递了null值,而是意味着调用批处理完全忽略了该参数。请附上完整的复印件。我认为日志非常清楚已发送到服务器的内容。此参数被指定为:var requiredintparmeter=new SqlParameter(“RequiredInt”,typeof(int));此参数在sprocc调用中导致null:var requireditParameter=new SqlParameter(“requiredit”,0);
EXECSPROC @RequiredInt, @Table
-- RequiredInt: '0' (Type = Int32, IsNullable = false)
-- @Table: '' (Type = Object, IsNullable = false)
-- Executing at 1/10/2018 4:42:09 PM +01:00