使用EF 4.1存储过程

时间:2011-06-30 18:36:29

标签: entity-framework entity-framework-4

我有一个参数化的存储过程,它正在执行一个视图并返回结果。该视图显示了两个表的连接结果。我需要将参数传递给此存储过程并使用EF 4.1代码第一种方法从MVC3控制器操作调用它并返回结果。我怎样才能做到这一点。请逐步建议。

感谢。

3 个答案:

答案 0 :(得分:0)

我不知道“Code First不支持存储过程”的哪一部分人们不理解,但这种情况不断出现,它不应该出现。你可以混淆你的方式(种类),但实际上如果你需要执行存储过程,那么你现在不应该首先使用代码。

答案 1 :(得分:0)

你也可以查看这篇文章。它至少可以帮助你完成第一步:在EF 4.1中使用参数执行proc

How to use DbContext.Database.SqlQuery<TElement>(sql, params) with stored procedure? EF Code First CTP5

我的代码:

context.Database.SqlQuery<EntityType>(
    "EXEC ProcName @param1, @param2", 
    new SqlParameter("param1", param1), 
    new SqlParameter("param2", param2));

答案 2 :(得分:0)

我不确定这是否会对您有所帮助,但这是我如何使用EF 4.1和DevArt驱动程序调用Oracle proc。这只返回一个值,但您可以调整它以返回多行。我有一个名为P_SID.SID_PGet的包.proc:

PROCEDURE SID_PGet(io_SID OUT varchar2) is
Begin
   io_SID:=GetSID;
End;

以下是我如何调用它并检索SID值:

var parameter = new Devart.Data.Oracle.OracleParameter("io_SID", Devart.Data.Oracle.OracleDbType.VarChar, ParameterDirection.Output);
this.Database.ExecuteSqlCommand("BEGIN P_SID.SID_PGet(:io_SID); END;", parameter);
var sid = parameter.Value as string;

return sid;