在直接调用存储过程或函数时,我尝试将 SQL Server 命名参数与 ObjectContext.ExecuteStoreQuery
和 ObjectContext.ExecuteStoreCommand
结合使用。
SQL Server 命名参数与 Entity Framework 命名参数不同 - 它们允许我执行与此类似的查询:
EXEC sp_GetData @firstParameter = 1, @thirdParameter = 2, @secondParameter = 1
与按顺序计算的 Entity Framework 命名参数相比,此查询中参数的顺序并不重要。
我想将 SQL Server 命名参数与 Entity Framework 结合使用,这样,如果存储过程中参数的顺序发生更改,则调用它的 Entity Framework 代码不会受到影响。
最佳答案
为了使其按预期工作,您需要将查询文本设置为参数化查询。棘手的部分是您只需要确保参数的命名与 SP 参数的命名不同即可:
var cmdText = "[DoStuff] @Name = @name_param, @Age = @age_param";
var @params = new[]{
new SqlParameter("name_param", "Josh"),
new SqlParameter("age_param", 45)
};
ObjectContext.ExecuteStoreQuery<MyObject>(cmdText, @params);
关于sql-server - 将 SQL Server 命名参数与 ExecuteStoreQuery 和 ExecuteStoreCommand 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13035353/