Entity framework 当通过Database.SqlQuery调用存储过程时,实体框架出现错误
当使用int类型的参数和值0调用存储过程时,Entity Framework会向服务器发送空值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 =
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