我有一个参数化的存储过程,它正在执行一个视图并返回结果。该视图显示了两个表的连接结果。我需要将参数传递给此存储过程并使用EF 4.1代码第一种方法从MVC3控制器操作调用它并返回结果。我怎样才能做到这一点。请逐步建议。
感谢。
答案 0 :(得分:0)
我不知道“Code First不支持存储过程”的哪一部分人们不理解,但这种情况不断出现,它不应该出现。你可以混淆你的方式(种类),但实际上如果你需要执行存储过程,那么你现在不应该首先使用代码。
答案 1 :(得分:0)
你也可以查看这篇文章。它至少可以帮助你完成第一步:在EF 4.1中使用参数执行proc
我的代码:
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;