Entity framework EntityFramework与Oracle插入多对多错误
我正在使用EntityFramework 5.0对Oracle 11g数据库进行建模。我有3张具有多对多关系的表Entity framework EntityFramework与Oracle插入多对多错误,entity-framework,oracle11g,many-to-many,Entity Framework,Oracle11g,Many To Many,我正在使用EntityFramework 5.0对Oracle 11g数据库进行建模。我有3张具有多对多关系的表 CREATE TABLE za (id NUMBER(10,0) NOT NULL, name VARCHAR2(20 BYTE) NOT NULL, CONSTRAINT za_pk PRIMARY KEY (id)); CREATE TABLE zb (id NUMBER(10,0) NOT NULL, name VARCHAR2(20 BYTE) NOT NULL, CONS
CREATE TABLE za
(id NUMBER(10,0) NOT NULL,
name VARCHAR2(20 BYTE) NOT NULL,
CONSTRAINT za_pk PRIMARY KEY (id));
CREATE TABLE zb
(id NUMBER(10,0) NOT NULL,
name VARCHAR2(20 BYTE) NOT NULL,
CONSTRAINT zb_pk PRIMARY KEY (id))
CREATE TABLE zc(
za_id NUMBER(10,0) NOT NULL,
zb_id NUMBER(10,0) NOT NULL,
CONSTRAINT zc_pk PRIMARY KEY (za_id, zb_id),
CONSTRAINT zc_za_fk FOREIGN KEY (za_id) REFERENCES za (id),
CONSTRAINT zc_zb_fk FOREIGN KEY (zb_id) REFERENCES zb (id))
为了在向表中插入记录时具有自动增量id,我向每个表中添加了序列和触发器:
CREATE OR REPLACE TRIGGER za_trigger BEFORE INSERT ON za
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
BEGIN select ZA_SEQ.nextval into :NEW.ID from dual;
END;
CREATE OR REPLACE TRIGGER zb_trigger BEFORE INSERT ON zb
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
BEGIN select ZB_SEQ.nextval into :NEW.ID from dual;
END;
现在,当我使用此代码向数据库插入记录时:
ZA za = new ZA();
za.NAME = "ZA1";
ZB zb1 = new ZB();
zb1.NAME = "ZB1";
ZB zb2 = new ZB();
zb2.NAME = "ZB2";
za.ZB.Add(zb1);
za.ZB.Add(zb2);
Entities entities = new Entities();
entities.ZA.Add(za);
entities.SaveChanges();
我收到此错误:保存未公开其关系的外键属性的实体时出错。EntityEntries属性将返回null,因为无法将单个实体标识为异常源。通过在实体类型中公开外键属性,可以更轻松地在保存时处理异常。有关详细信息,请参见InnerException:
InnerException : ORA-02291: integrity constraint (SIMCA.ZC_ZB_FK) violated - parent key not found
那个么,我如何才能将记录插入到具有多对多关系的表中呢?几天后,我找到了一个解决方案。当我从数据库创建模型时,实体的所有ID必须将其属性
StoreGeneratedPattern
设置为Identity
所以,没有人能回答我的问题!谢谢是我提醒我的同事在新创建的列上将StoreGeneratedPattern设置为Identity,而现在是我忘记了,不得不追赶ORA-02291。接得好:)