我有一个正在执行视图并返回结果的参数化存储过程。该视图显示了两个表的连接结果。我需要将参数传递给此存储过程,并使用EF 4.1代码优先方法从MVC3控制器操作中调用它并返回结果。我怎样才能做到这一点。请一步一步建议。EF 4.1的存储过程
谢谢。
我有一个正在执行视图并返回结果的参数化存储过程。该视图显示了两个表的连接结果。我需要将参数传递给此存储过程,并使用EF 4.1代码优先方法从MVC3控制器操作中调用它并返回结果。我怎样才能做到这一点。请一步一步建议。EF 4.1的存储过程
谢谢。
我不知道“代码优先不支持存储过程”的哪部分人不理解,但是这种情况不断出现,它不应该。你可以混淆它(种类),但是如果你需要执行存储过程,那么你现在不应该先使用代码。
仅仅因为微软没有在4.1中包含它并不意味着人们不需要它。为了我自己的类似目的,我已经将所有连接信息与我的POCO建立了联系。我想要做的最后一件事是将一个完全独立的数据库模式放在一起,只是为了执行一些不适合我的POCO模型的任意SP。 –
我从来没有说过人们不需要它。但是需要或不需要,它不在那里。 – Tridus
你也可以查看这篇文章。这可能有助于至少第一步:在EF执行一个进程与参数4.1
我的代码:
context.Database.SqlQuery<EntityType>(
"EXEC ProcName @param1, @param2",
new SqlParameter("param1", param1),
new SqlParameter("param2", param2));
我不知道这是否会帮助你,但这里是如何我使用EF 4.1和DevArt驱动程序调用Oracle proc。这只是返回一个单一的值,但你可能会适应它返回多行。我有一个名为P_SID.SID_PGet package.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;
你好:我用下面的代码 VAR RS =背景 。 Database.SqlQuery(“EXECUTE AuthenticateUser”)。ToList(); 看来工作,但有问题的视图返回那里作为我的POCO类本人身份证它被定义为列名“注册ID”: [关键] [列(“注册ID”) ] public long RegistryID {get;组; } 存储过程返回的列数及其名称应与poco类相同吗? –
DotnetSparrow