0
我使用EF 6类SqlQuery/ExecuteSqlCommand调用,像这样的存储过程:EF6使用SqlQuery/ExecuteSqlCommand调用存储过程而不考虑参数顺序?
var parameters = new List<SqlParameter>()
{
new SqlParameter("@ID", model.ID),
new SqlParameter("@Email", model.Email),
new SqlParameter("@Phone", model.Phone)
};
using (var context = new MyContext())
{
context.Database.ExecuteSqlCommand("sp_MySproc_U @ID, @Email, @Phone", parameters.ToArray());
}
这个伟大的工程,直到我意识到我的电子邮件值保存到我的手机领域,反之亦然。为什么?因为我的存储过程中参数的顺序是@ID,@Phone,@Email,这显然与我的代码中的参数顺序不匹配。在SqlQuery/ExecuteSqlCommand语法中是否有一种简单的方法来专门命名参数并将其与值进行匹配。我的目标是调用我的存储过程,而不必关心与存储过程中的顺序匹配的代码中的参数顺序。
有人在this post建议如下,
db.Database.SqlQuery<resultClass>("mySpName [email protected],[email protected],[email protected]", parameters.ToArray()).ToList();
但这种回报和 “无效字符 '='” 的错误。谢谢你的帮助。