我第一次使用實體框架,我試圖用集合創建一個對象(並且我想要創建集合中的所有對象在數據庫中),但我有一些外鍵違規。實體框架一對多插入 - 違反外鍵
我的示例表:
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 –