2017-03-17 97 views
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(); 

但这种回报和 “无效字符 '='” 的错误。谢谢你的帮助。

回答

相关问题