EF4.1 Code First:带输出参数的存储过程

时间:2011-11-18 09:31:22

标签: entity-framework stored-procedures parameters ef-code-first

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

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

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

我可以使用EF4.1 Code First解决这个问题吗?

1 个答案:

答案 0 :(得分:26)

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;