我第一次使用实体框架,我试图用集合创建一个对象(并且我想要创建集合中的所有对象在数据库中),但我有一些外键违规。实体框架一对多插入 - 违反外键
我的示例表:
table APPOINTMENTS: ID, VAR1, DATE_APPOINTMENT
table GUESTS: ID, APPOINTMENT_ID, USER_ID, VAR2, VAR3
我的测试代码:
DomainService aux = new DomainService();
APPOINTMENTS appointment = new APPOINTMENTS();
appointment.VAR1 = "BLA";
appointment.DATE_APPOINTMENT = new DateTime();
//The user with id = 1 is already created in the database
appointment.GUESTS.Add(new GUESTS { USER_ID = 1, VAR2 = 1, VAR3 = "F" });
aux.InsertAppointment(appointment);
在我的DomainService有:
public void InsertAppointment(APPOINTMENTS appointment)
{
using (var context = this.ObjectContext)
{
context.AddToAPPOINTMENTS(appointment);
context.SaveChanges();
}
}
但我发现了这个错误: {“ORA -02291:违反了完整性约束(FK_GUESTS_APPOINTMENTS) - 未找到父键“}
我在做什么错?
UPDATE: 要创建在数据库中的ID,我使用的每个表中序列和插入前触发器来获取下一个值。 当我创建单个对象时,例如没有客人的约会,它会插入到数据库中,并生成ID。
我有整整做在EF中也是这样,它适用于我。两个表中的主键都是自动编号。我正在使用sql server的数据存储 –
我在插入前使用序列和触发器...当我尝试创建一个没有guest的约会时,它会生成一个ID,当我尝试使用现有的约会ID创建一个guest时,它也能正常工作 – Canastro
@MuhammadAdeelZahid他使用的是Oracle,而不是SQL Server –