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