我在 MVC4 应用程序中使用带有 EF 的 ODP.NET。执行以下操作时,
_db.Set<User>().FirstOrDefault(x => x.Email == Email || x.DisplayName == DisplayName)
它抛出异常
[指定的强制转换无效。] Oracle.DataAccess.Client.OracleDataReader.GetDecimal(Int32 i)
我不明白的是我的用户对象没有 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 位开发机器上,但是相同的代码会在使用相同 32 位库的 64 位生产机器上引发异常。我的项目是针对目标 AnyCPU 构建的。