EF中存储过程中的输出参数
我有一个包含大量复杂存储过程的现有数据库,我想通过 EF 4 使用这些过程。我已完成以下操作:
- 创建了一个 EF 数据对象
Customer
。 - 将存储过程添加到 EF 中
- 右键单击 EF 设计器并添加函数导入。
- 函数导入名称 -
MyFunction
,复杂类型。
结果代码:
CustomerEntities entity = new CustomerEntities();
var result = entity.MyFunction("XYZ", ref o_MyString);
现在我的存储过程有一个输出参数,我曾经通过 ref (在 WebForm 中)调用该参数。但我收到以下错误:
无法从“引用字符串”转换为 'System.Data.Objects.ObjectParameter'
请帮助
编辑
当我尝试保存时,出现以下错误
映射函数绑定指定了带有不受支持的参数的函数 Model.Store.P_GetCustomer:o_MyString。输出参数只能通过 RowsAffectedParameter 属性进行映射。使用结果绑定从函数调用返回值。
I have an existing database with lots of complex stored procedure and I want to use those procedure through EF 4. I have done the following:
- Created an EF data object,
Customer
. - Added a Stored Procedure into the EF
- Right Click on the EF designer and add a function import.
- Function Import Name -
MyFunction
, complex type.
Resulting code:
CustomerEntities entity = new CustomerEntities();
var result = entity.MyFunction("XYZ", ref o_MyString);
Now my stored procedure has an output parameter which I used to call by the ref (in WebForm). But I am getting the below error:
cannot convert from 'ref string' to
'System.Data.Objects.ObjectParameter'
Please help
Edit
When I am trying to save I am getting the below error
A mapping function binding specifies a function Model.Store.P_GetCustomer with an unsupported parameter: o_MyString. Output parameters may only be mapped through the RowsAffectedParameter property. Use result bindings to return values from a function invocation.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
输出参数在
ObjectParameter
实例中返回。因此,您必须使用如下代码:原因是函数导入无法使用 ref 参数,因为只有在处理数据库中的结果集时才会填充输出参数 = 如果您不调用
ToList
或迭代结果存储过程的输出参数为空。Output parameters are returned in
ObjectParameter
instance. So you must use code like:The reason is that function import cannot use ref parameter because output parameter is not filled until you process result set from the database = if you don't call
ToList
or iterate the result of the stored procedure the output parameter is null.msdn 建议如下:
解决方案
msdn suggests the following:
Solution