gpt4 book ai didi

c# - EF4调用存储过程

转载 作者:行者123 更新时间:2023-11-30 15:07:54 25 4
gpt4 key购买 nike

我正在尝试调用 Entity Framework 4 应用程序中的存储过程,但到目前为止得到了奇怪的结果。存储过程采用INOUT 参数,并返回结果集。我映射了存储过程并创建了一个复杂类型来表示返回结果集中的一行。我叫它

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 枚举,或调用任何访问底层集合的方法), 的值out1out2null
我该如何解决?
谢谢

最佳答案

你无法修复它。这是一个陷阱。在输出参数可访问之前必须具体化或丢弃结果集,因为这些输出参数在最后一个结果集中传输,因此内部数据读取器必须首先读取带有主要数据的返回结果集,然后访问下一个结果集以读取输出参数。顺便提一句。如果您直接使用 ADO.NET 也是一样的 - 这不是 Entity 框架本身的特性,而是 SQL 服务器返回输出参数的方式以及 DataReader 按顺序使用结果集的方式。

关于c# - EF4调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com