我先使用Entity Framework 4.1代码。我想调用一个具有输出参数的存储过程,并检索除强类型结果集之外的该输出参数的值。它的搜索功能具有这样的签名

public IEnumerable<MyType> Search(int maxRows, out int totalRows, string searchTerm) { ... }

我发现了很多有关“函数导入”的提示,但这与Code First不兼容。
我可以使用Database.SqlQuery(...)调用存储过程,但这不适用于输出参数。

我可以完全使用EF4.1代码解决该问题吗?

最佳答案

SqlQuery使用输出参数,但是您必须正确定义SQL查询和设置SqlParameter。尝试类似的东西:

var outParam = new SqlParameter();
outParam.ParameterName = "TotalRows";
outParam.SqlDbType = SqlDbType.Int;
outParam.ParameterDirection = ParameterDirection.Output;

var data = dbContext.Database.SqlQuery<MyType>("sp_search @SearchTerm, @MaxRows, @TotalRows OUT",
               new SqlParameter("SearchTerm", searchTerm),
               new SqlParameter("MaxRows", maxRows),
               outParam);
var result = data.ToList();
totalRows = (int)outParam.Value;

关于entity-framework - EF4.1代码优先: Stored Procedure with output parameter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8180310/

10-10 23:26