Я использую ODP.NET с EF в приложении MVC4. При выполнении операции ниже,Недопустимый листинг от Int32 до десятичного
_db.Set<User>().FirstOrDefault(x => x.Email == Email || x.DisplayName == DisplayName)
он бросает исключение
[указано литая не действует.] Oracle.DataAccess.Client.OracleDataReader.GetDecimal (Int32 я)
Что Я не понимаю, что у моего User Object нет полей Int, я сделал их все десятичные, чтобы сгладить ситуацию с помощью Oracle DB. Моего пользователя таблица:
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-разрядной машине разработки, но тот же код генерирует исключение на 64-битной производственной машине , используя ту же 32-битную библиотеку. Мой проект был построен целевой AnyCPU.
Параметр Int32 метода GetDecimal является индексом столбца - он выдает ошибку, пытающуюся преобразовать столбец с индексом «i». Он не пытается конвертировать ничего в int. –