0

我有一個Oracle函數返回一個Oracle用戶定義類型的嵌套表。實體框架5可以映射返回嵌套表的Oracle函數嗎?

如果我把蟾蜍或SQL開發人員用這樣的語法功能:

SELECT * FROM TABLE(MYFUNCTION('SOME_STRING_PARAM')) 

我得到預期的結果。

我甚至可以從Visual Studio Server Explorer嚮導中爲用戶定義的類型創建.NET類。

但是,當我嘗試從實體框架模型嚮導創建導入功能時,我沒有得到一個適當的選項來定義返回的類型。

我想做一些不支持的事嗎?

回答

1

導入函數的行爲與ODP.NET不同。它假定它作爲OUT參數找到的第一個SYS_REFCURSOR是實體函數的「返回值」。

因此,您需要用存儲過程來包裝您的函數,該存儲過程將嵌套表數據放入REF CURSOR中。

然後,您需要了解此REF CURSOR的配置文件中所需的元數據。在用於Visual Studio的Oracle開發工具的聯機幫助中,請閱讀實體框架部分以獲取更多信息。

這裏是一個演練,顯示瞭如何一個導入功能設置: https://apex.oracle.com/pls/apex/f?p=44785:24:106387346683725:::24:P24_CONTENT_ID,P24_PROD_SECTION_GRP_ID,P24_PREV_PAGE:10068,,24

由於這一切複雜性,我不建議使用導入函數與非標Oracle存儲函數或過程返回值除非你絕對必須。

+0

非常感謝,我將嘗試使用直接REF CURSOR方法(無嵌套表格)。 – sblandin 2014-09-01 08:04:28