这是否真的是sql存储过程中sql参数的顺序必须与SqlSquery中使用的sql参数的顺序相匹配:
var Parameter = new List<SqlParameter>();
Parameter.Add(new SqlParameter("@ParamOne", 1));
Parameter.Add(new SqlParameter("@ParamTwo", 2));
Parameter.Add(new SqlParameter("@ParamThree", 3));
context.Database.SqlQuery<myEntityType>("exec sp_Stored_Procedure @ParamOne, @ParamTwo, @ParamThree", Parameter.ToArray()).ToList<myEntityType>();
如果sql开发人员决定以下列方式更改存储过程
ALTER PROCEDURE [dbo].[sp_Stored_Procedure]
@ParamOne as int,
@ParamTwo as int,
@ParamThree as int,
AS ......
结果集是空的吗?
这可能会引发很多问题,我想问的是在这种情况下我有什么遗漏?
答案 0 :(得分:1)
我一开始没有注意到这种情况!
这样的事情可以解决您的问题:
var Parameter = new List<SqlParameter>();
Parameter.Add(new SqlParameter("@p1", 1));
Parameter.Add(new SqlParameter("@p2", 2));
Parameter.Add(new SqlParameter("@p3", 3));
context.Database.SqlQuery<myEntityType>("exec sp_Stored_Procedure @ParamOne = @p1, @ParamTwo = @p2, @ParamThree = @p3", Parameter.ToArray()).ToList<myEntityType>();
答案 1 :(得分:0)
这实际上可以同时运作。
如果您有疑问:
"exec sp_Stored_Procedure @p0, @p1, @p2"
您的参数数组将按顺序分配。
但是,如果您有查询:
"exec sp_Stored_Procedure @username, @password"
使用SqlParameter数组,例如新的SqlParameter(“@ password”,userSuppliedPassword)然后订单无关紧要。