Sto utilizzando Entity Framework per la prima volta e sto provando a creare un oggetto con una raccolta (e voglio che tutti gli oggetti nella raccolta siano creati nel database pure) ma sto avendo alcune violazioni delle chiavi esterne.Inserimento di entità da uno a molti Inserisci - Violazione di chiave esterna
mie tabelle di esempio:
table APPOINTMENTS: ID, VAR1, DATE_APPOINTMENT
table GUESTS: ID, APPOINTMENT_ID, USER_ID, VAR2, VAR3
mio codice di prova:
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);
A DomainService ho:
public void InsertAppointment(APPOINTMENTS appointment)
{
using (var context = this.ObjectContext)
{
context.AddToAPPOINTMENTS(appointment);
context.SaveChanges();
}
}
Ma sto ottenendo questo errore: { "ORA -02291: violazione dell'integrità (FK_GUESTS_APPOINTMENTS) violata - chiave genitore non trovata "}
Cosa sto sbagliando?
UPDATE: Per creare l'ID del nel database, sto usando una sequenza per ogni tabella e un trigger prima di inserto per ottenere il valore successivo. Quando creo un singolo oggetto, ad es. un appuntamento senza ospiti, si inserisce nel database e genera l'id.
ho fatto esattamente la stessa cosa in EF e funziona per me. Le chiavi primarie in entrambe le tabelle sono numeri automatici. Sto usando SQL Server per l'archiviazione dei dati –
Sto usando sequenze e un trigger prima di inserire ...Quando cerco di creare solo un appuntamento senza ospiti genera un ID, e quando cerco di creare un ospite con un'appointmentID esistente funziona correttamente anche – Canastro
@MuhammadAdeelZahid Lui sta usando Oracle, SQL Server non –