2012-10-18 140 views
2

我想將存儲過程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參數(兩個方向的綠色箭頭)。無論是我的參數映射到屬性或沒有,我得到了同樣的錯誤:

A mapping function binding specifies a function Model.Store.ForExample with an unsupported parameter: LastUpdate. Output parameters may only be mapped through the RowsAffectedParameter property. Use result bindings to return values from a function invocation.

我嘗試添加一個手冊中的「結果的列綁定」爲LASTUPDATE結合,但沒有奏效。

是我想要做的EF 4支持,如果是的話,它是如何做到的?

回答

0

由於在錯誤文氏說,「輸出參數只能通過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

和存儲過程的輸出參數只能用於樂觀併發性。

+0

你知道的任何特殊,需要對「結果的列綁定」需做填充?在我的情況下,即使我的SPROC返回數據集 – JoeBrockhaus

+0

^- > NVM,我也沒有選擇。結果列綁定不會有填充值:您必須手動輸入它們。這是不幸的,因爲必須映射SPROC並且如果設置了輸出列/類型,它應該能夠自動抓取它們。 – JoeBrockhaus

相關問題