Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle ODP.Net und EF CodeFirst – SaveChanges-Fehler

Die Idee mit dem Attach() Methode ist, dass Sie eine Entität haben, von der bekannt ist, dass sie sich in der DB befindet, aber nicht von diesem Kontext verfolgt wird, oder? Meine Frage an Sie ist, wissen Sie sicher, dass diese Rolle hier:

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

ist etwas, das bereits existiert? Wenn dies nicht der Fall ist, denke ich nicht, dass Sie

verwenden möchten
ctx.Roles.Attach(r);

eher würdest du schreiben:

ctx.Roles.Add(r);

und dann könntest du dich umdrehen und schreiben

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

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

Das Problem, das Ihr erstes Beispiel hat, ist, dass diese neue Rolle wirklich neu in der Datenbank ist. Sie möchten sie also nicht anhängen, sondern hinzufügen.

Und der einzelne Aufruf von ctx.SaveChanges() sollte hier gut funktionieren.