在Entity Framework中使用SqlQuery

时间:2015-06-15 23:09:48

标签: sql-server entity-framework

这是否真的是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 ......

结果集是空的吗?

这可能会引发很多问题,我想问的是在这种情况下我有什么遗漏?

2 个答案:

答案 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)然后订单无关紧要。