Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle ODP.Net ed EF CodeFirst - Errore SaveChanges

L'idea con Attach() il metodo è che hai un'entità che è nota per essere nel DB ma non viene tracciata da questo contesto, giusto? La mia domanda per te è:sai per certo che questo ruolo qui:

Role r = new Role { ID = 1, Name = "Members" };

è qualcosa che esiste già? In caso contrario, non credo che quello che vuoi fare sia usare

ctx.Roles.Attach(r);

piuttosto è che dovresti scrivere:

ctx.Roles.Add(r);

e poi potresti voltarti e scrivere

User u = new User {
    Login = login,
    Password = password,
    Status = 1,
};

ctx.Users.Add(u);
u.Roles.Add(r);
ctx.SaveChanges();

Il problema del tuo primo esempio è che questo nuovo ruolo è davvero nuovo per il DB, quindi allegarlo non è quello che vorresti fare, piuttosto vorresti aggiungerlo.

E la singola chiamata a ctx.SaveChanges() dovrebbe funzionare bene qui.