实体框架:从存储过程映射输出参数?

时间:2012-10-18 20:13:14

标签: stored-procedures entity-framework-4

我想将存储过程OUTPUT参数映射到实体。

如,

PROCEDURE ForExample
@ID int,
@LastUpdate datetime OUTPUT
AS
Update EntityTable Set LastUpdate = GETDATE() Where ID = @ID
Select @LastUpdate = LastUpdate From EntityTable Where ID = @ID

我想将@LastUpdate输出参数映射到实体属性。

在“存储过程映射”对话框中,@ LastUpdate参数显示为InOut参数(绿色箭头向两个方向)。无论我是否将参数映射到属性,我都会得到同样的错误:

  

映射函数绑定使用不受支持的参数指定函数Model.Store.ForExample:LastUpdate。输出参数只能通过RowsAffectedParameter属性进行映射。使用结果绑定从函数调用返回值。

我尝试在“结果列绑定”中为LastUpdate添加手动绑定,但这不起作用。

我正在尝试做什么来支持EF 4,如果是这样,它是如何完成的?

2 个答案:

答案 0 :(得分:1)

正如在错误文本中所说,“输出参数可能只能通过RowsAffectedParameter属性进行映射。使用结果绑定从函数调用返回值”

如果您希望您的程序返回一些值,例如最后更新,它应该通过结果集返回它。这意味着,您的存储过程应如下所示:

PROCEDURE ForExample
@ID int,
AS
Update EntityTable Set LastUpdate = GETDATE() Where ID = @ID
/*return lastupdate in resultset*/
Select LastUpdate as LastUpdate From EntityTable Where ID = @ID

并且您应该将结果集列映射到lastupdate属性,如下所示: enter image description here

存储过程的输出参数只能用于乐观并发。

答案 1 :(得分:0)