2013-08-20 3 views
0

MVC4 응용 프로그램에서 EF와 함께 ODP.NET을 사용하고 있습니다. 아래의 동작을 수행 할 때,Int32에서 Decimal 로의 유효하지 않은 캐스트

_db.Set<User>().FirstOrDefault(x => x.Email == Email || x.DisplayName == DisplayName) 

는 예외

[지정한 캐스트가 유효하지 않다.] 슬로우 Oracle.DataAccess.Client.OracleDataReader.GetDecimal (INT32 I)

무엇 내 사용자 객체에 Int 필드가 없다는 것을 이해하지 못합니다. Oracle DB를 사용하여 모든 항목을 10 진수로 부드럽게 처리했습니다. 내 사용자 테이블 :

CREATE TABLE USERS (
USER_ID NUMBER(38) NOT NULL, 
DISPLAY_NAME VARCHAR2(50 CHAR), 
IS_LOCKED_OUT_FL VARCHAR2(1 CHAR), 
IS_LOCKED_REASON VARCHAR2(256 CHAR), 
IS_DELETED_FL VARCHAR2(1 CHAR), 
EMAIL VARCHAR2(254 CHAR), 
TITLE VARCHAR2(20 CHAR), 
FIRSTNAME VARCHAR2(150 CHAR), 
SURNAME VARCHAR2(150 CHAR), 
DATECREATED DATE DEFAULT SYSDATE, 
SCHEME_ID NUMBER(38), 
STATUS VARCHAR2(20 CHAR) DEFAULT 'New', 
PHONE VARCHAR2(20 CHAR) DEFAULT '', 
PRODUCT_ID NUMBER(38) DEFAULT 0, 
CONSTRAINT BCARD_USERS_PK PRIMARY KEY (USER_ID), 
CONSTRAINT UK_BCARD_USERS UNIQUE (SCHEME_ID)) 
TABLESPACE SYSTEM 
STORAGE (
    INITIAL 64K 
    NEXT 1M 
    MAXEXTENTS UNLIMITED 
) 

나는 심지어 오류가 ODP.NET에 의해 발생하기 때문에 디버깅을 시작할 위치를 모르는 나는 도서관에 들어 서면 수 없습니다. 또한이 문제는 내 32 비트 개발 컴퓨터에서 발생하지 않지만 동일한 코드는 동일한 32 비트 라이브러리를 사용하는 64 비트 생산 시스템 에서 예외를 발생시킵니다. 내 프로젝트는 대상 AnyCPU를 만들었습니다.

+1

GetDecimal 메서드의 Int32 매개 변수는 열의 인덱스입니다. 인덱스 'i'가있는 열을 변환하려고하면 오류가 발생합니다. 무엇이든 int로 변환하려고하지 않습니다. –

답변

1

GetDecimal 메서드의 Int32 매개 변수는 열의 인덱스이므로 인덱스 'i'가있는 열을 변환하려고하면 오류가 발생합니다. 무엇이든 int로 변환하려고하지 않습니다.

내 생각에 사용자 객체에는 nullable (십진수)가 아닌 십진수 필드가 있지만 schem_id 및 product_id와 같은 일부 열은 데이터베이스에 null을 허용합니다.

+0

보세요. –

+0

답변을 업데이트 할 때 의견을 달아주세요. 실제로 그게 문제였습니다. –

+0

아니요 문제는 무엇인지 자세히 설명해주세요. –

관련 문제