ODP.NET&&实体框架'索引超出了数组'Exception

时间:2017-02-20 15:23:47

标签: c# oracle entity-framework odp.net

我正在使用带有实体框架6的oracle 12 c,具体取决于.net(ODP.net)的oracle数据提供程序。当我尝试在插入过程中为计算列添加结果绑定时,我得到'索引超出了数组'异常的范围。

以下是方案详细信息: 使用oracle 12 c我创建了这个包含'commision'作为计算列(vrtual)

的表
CREATE TABLE emp(
  id          NUMBER,
  first_name  VARCHAR2(10),
  last_name   VARCHAR2(10),
  salary      NUMBER(9,2),
  commision   NUMBER GENERATED ALWAYS AS (ROUND(salary*0.1,2)) VIRTUAL,
  CONSTRAINT employees_pk PRIMARY KEY (id)
); 

之后我创建了一个插入过程,在最后返回插入的记录:

 CREATE OR REPLACE PROCEDURE sprocEMP_INSERT 
  (    
    first_name_P    EMP.first_name%TYPE     ,
    last_name_P     EMP.last_name%TYPE      ,
    salary_P        EMP.salary%TYPE         ,
    curParam OUT SYS_REFCURSOR

  )    
IS 
   RECORD_ID EMPLOYEES.EMPLOYEE_ID%TYPE;
BEGIN 
    RECORD_ID := EMPLOYEES_SEQ.NEXTVAL; 
    INSERT INTO HR.EMPLOYEES
        (
          id          ,
          first_name  ,
          last_name   ,
          salary        
        )  
    VALUES 
        (
          RECORD_ID   ,
          first_name_P,
          last_name_P ,
          salary_P
        );  
    COMMIT;
    OPEN curParam FOR 
        SELECT * FROM EMP 
        WHERE ID = RECORD_ID; 
END;

然后我将它们导入EF模型并映射插入过程,如链接图像:

EF Model Photo

到目前为止,每件事情都是好的,插入程序运行良好并返回id值,但是当我添加任何其他计算列(如链接图像中)时,我得到'索引超出了界限数组'异常

EF Model which cause exception

例外详细信息:

栈跟踪

   at Oracle.ManagedDataAccess.Client.OracleDataReader.GetValue(Int32 i)
   at System.Data.Entity.Core.Mapping.Update.Internal.FunctionUpdateCommand.Execute(Dictionary`2 identifierValues, List`1 generatedValues)
   at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()

来源

Oracle.ManagedDataAccess

0 个答案:

没有答案