使用Oracle SP

时间:2018-02-01 06:35:28

标签: oracle entity-framework

Visual Studio 2013,实体框架5: 做"添加功能导入"对于具有输出类型SYS_REFCURSOR的Oracle存储过程。在"中返回"的集合。 - 选择Complex,然后单击"获取列信息" - 我一直在:

  

"选定的存储过程或函数不返回任何列"。

我知道配置文件(在这种情况下是app.config)应该包含存储过程的条目。我生成了它:

<oracle.manageddataaccess.client>
    <version number="*">
      <implicitRefCursor>
        <storedProcedure schema="<Scheme name>" name="<SP Name>">
          <refCursor name="<ref cursor name>">
           <bindInfo mode="Output" />
          </refCursor>
        </storedProcedure>
      </implicitRefCursor>
    </version>
  </oracle.manageddataaccess.client>

我在这里缺少什么? (阅读很多帖子 - 没有一个帮助)。 设置条目中DBName的值应该是多少?数据库本身的名称?配置文件中连接字符串条目的名称?创建的实体框架的名称?

2 个答案:

答案 0 :(得分:0)

我不了解Visual Studio。但是,从DBName开始,您询问:在Oracle中,连接字符串看起来像connect username/password@database,其中database表示TNSNAMES.ORA文件中的别名。如果你没有,你仍然可以连接。看看这个例子,也许你会看到一些熟悉的东西,并且能够使用它。

我已经删除了机密数据,因为Big Brother正在关注:)以及一些无关紧要的内容。

我应该知道数据库名称(db11g),以便我可以 ping 它并查找主机,端口和SID:

M:\>tnsping db11g

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=db_11g) (PORT=1521)) (CONNECT_DATA= (SID=db11g)))
OK (50 msec)

好的,现在ping主机以找到其IP地址:

M:\>ping db_11g

Pinging db_11g [xxx.xxx.xxx.xxx] with 32 bytes of data:
Reply from xxx.xxx.xxx.xxx: bytes=32 time=4ms TTL=59

最后,连接:

M:\>sqlplus scott/tiger@xxx.xxx.xxx.xxx:1521/db11g
                        --------------- 
                        IP address      ----
                                        Port -----
                                             SID

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SQL>

希望你能让它发挥作用。如果没有,抱歉,我无法帮助你。

答案 1 :(得分:0)

我发现了问题所在: 1.在服务器资源管理器中,运行该过程。 2.有一个屏幕,可让您在配置文件中签署选项以包含所需的配置(见下文)。为了让实体框架生成模型 - 它应该知道字段。为了达到这个目的,需要检查&#34;选择配置&#34;选项,然后点击&#34;添加配置&#34; 这是相关的屏幕: https://i.stack.imgur.com/FFoTv.jpg