Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle ODP.Net et EF CodeFirst - Erreur de sauvegarde des modifications

L'idée avec le Attach() méthode est que vous avez une entité connue pour être dans la base de données mais qui n'est pas suivie par ce contexte, n'est-ce pas ? Ma question est la suivante :savez-vous avec certitude que ce rôle ici :

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

est quelque chose qui existe déjà? Si ce n'est pas le cas, je ne pense pas que vous souhaitiez utiliser

ctx.Roles.Attach(r);

c'est plutôt que vous écririez :

ctx.Roles.Add(r);

et ensuite vous pourriez vous retourner et écrire

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

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

Le problème de votre premier exemple est que ce nouveau rôle est vraiment nouveau pour la base de données, donc l'attacher n'est pas ce que vous voudriez faire, vous voudriez plutôt l'ajouter.

Et l'appel unique à ctx.SaveChanges() devrait fonctionner très bien ici.