![](/img/trans.png)
[英]How to call a stored Procedure for SELECT in EF4 to populate an EntityDataSource
[英]How to call stored procedure in EF4
我正在尝试在 Entity Framework 4 应用程序中调用存储过程,但到目前为止得到了奇怪的结果。 存储过程接受IN
和OUT
参数,并返回结果集。 我映射了存储过程并创建了一个复杂类型,它表示返回的结果集中的一行。 我称之为
using (MyObjectContext ctx = new MyObjectContext())
{
ObjectParameter out1 = new ObjectParameter("out1", typeof(String));
ObjectParameter out2 = new ObjectParameter("out2", typeof(String));
var res = ctx.my_proc(1,2, out1,out2);
}
问题是,除非我调用res.ToList()
(或通过res
枚举,或调用任何访问底层集合的方法),否则out1
和out2
的值是null
。
我如何解决它?
谢谢
你无法修复它。 这是一个问题。 结果集必须在 output 参数可访问之前实现或丢弃,因为这些 output 参数在最后一个结果集中传输,因此内部数据读取器必须首先读取返回的结果集和主数据,然后访问下一个结果集以读取 Z78E6221F6393D14CE6DZ 参数。 顺便提一句。 如果您直接使用 ADO.NET 也是一样 - 这不是实体框架本身的功能,而是 SQL 服务器如何返回 output 参数的方式以及 DataReader 如何按顺序使用结果集的方式。
当你调用返回行表的过程或查询时,当用户调用 ToList 或枚举返回值时,EF 会真正执行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.