我有一個表存儲被拒絕的合同建議。ORA-01400當試圖插入到schema.table.ID
TRIGGER "STATUS_CONTRATO_TRIGGER1"
BEFORE
INSERT
ON "STATUS_CONTRATO"
FOR EACH ROW
when (new.STC_ID = 0)
DECLARE
BEGIN
SELECT SEQ_STATUS_ID.NEXTVAL INTO :NEW.STC_ID FROM DUAL;
END;
SEQ_STATUS_ID
是一個簡單的序列:
CREATE TABLE "STATUS_CONTRATO" (
"STC_ID" NUMBER NOT NULL,
"CTB_CONTRATO" NUMBER NOT NULL,
"STC_DATA" DATE NOT NULL,
"STC_OBSERVACAO" VARCHAR2(200) NOT NULL,
CONSTRAINT "STATUS_CONTRATO_PK"
PRIMARY KEY ("STC_ID")
ENABLE
VALIDATE,
CONSTRAINT "FK_CONTRATO"
FOREIGN KEY ("CTB_CONTRATO")
REFERENCES "CONTRATO" (CTB_CONTRATO)
ON DELETE SET NULL
ENABLE
VALIDATE)
;
這個表有一個簡單的觸發器,其中的STC_ID
值被設置(由Visual Studio 2010生成的腳本)。
這裏是我的問題:
我successfuly在VS2010查詢窗口中執行此插入:
insert into myschema.STATUS_CONTRATO s(
s.STC_ID, s.CTB_CONTRATO, s.STC_DATA, s.STC_OBSERVACAO
)values(
0, 10, SYSDATE, 'Inserting by hand works'
);
但是,當我嘗試插入使用EF,我得到這個異常:
System.Data.UpdateException: An error occurred while updating the entries.
See the inner exception for details. ---> Oracle.DataAccess.Client.OracleException:
ORA-01400: cannot insert NULL into ("MYSCHEMA"."STATUS_CONTRATO"."STC_ID")
ORA-06512: at line 4
我使用這個代碼中插入
STATUS_CONTRATO statusContrato = new STATUS_CONTRATO() {
STC_ID = 0,
CTB_CONTRATO = codContrato,
STC_DATA = DateTime.Today,
STC_OBSERVACAO = observacao
};
ent.STATUS_CONTRATO.AddObject(statusContrato);
ent.SaveChanges();
我使用VS2010,的Oracle 11g(CentOS的服務器),ODP.NET客戶11.2.0.3.0生產,.NET Framework 4.0中,EF 4
嘗試使用System.Data.OracleClient並檢查問題是否仍然存在 – Nathan 2012-08-15 15:49:35
@Nathan System.Data.OracleClient不是EF提供程序。 – hmqcnoesy 2012-08-15 16:04:33
我已經從'System.Data.OracleClient'更改了,因爲它沒有正確綁定系統 – 2012-08-15 16:09:04