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

Stored procedures 实体框架:从存储过程映射输出参数?,stored-procedures,entity-framework-4,Stored Procedures,Entity Framework 4,我想将存储过程输出参数映射到实体 e、 g 过程示例 @ID int, @LastUpdate日期时间输出 AS Update EntityTable Set LastUpdate=GETDATE(),其中ID=@ID 从EntityTable中选择@LastUpdate=LastUpdate,其中ID=@ID 我想将@LastUpdate输出参数映射到实体属性 在存储过程映射对话框中,@LastUpdate参数显示为InOut参数(绿色箭头双向)。无论是否将参数映射到属性,都会出现相同的错误:

我想将存储过程输出参数映射到实体

e、 g

过程示例
@ID int,
@LastUpdate日期时间输出
AS
Update EntityTable Set LastUpdate=GETDATE(),其中ID=@ID
从EntityTable中选择@LastUpdate=LastUpdate,其中ID=@ID

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

在存储过程映射对话框中,@LastUpdate参数显示为InOut参数(绿色箭头双向)。无论是否将参数映射到属性,都会出现相同的错误:

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

我尝试在“结果列绑定”中为LastUpdate添加手动绑定,但没有成功


EF 4是否支持我尝试执行的操作?如果支持,如何执行?

正如错误文本中所述,“输出参数只能通过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属性,如下所示:


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

下面是另一种使用代码而不是设计器的方法:

您是否知道要填充“结果列绑定”需要执行哪些特殊操作?在我的例子中,我没有选择任何内容,即使存储过程返回数据集^-->NVM。结果列绑定将没有填充值:必须手动键入。这是不幸的,因为存储过程必须映射,如果设置了输出列/类型,它应该能够自动获取它们。。