sql >> Database >  >> RDS >> Oracle

Oracle ODP.Net en EF CodeFirst - SaveChanges-fout

Het idee met de Attach() methode is dat je een entiteit hebt waarvan bekend is dat deze zich in de DB bevindt, maar niet wordt gevolgd door deze context, toch? Mijn vraag aan jou is of je zeker weet dat deze rol hier:

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

is er iets dat al bestaat? Als dat niet het geval is, denk ik niet dat je

. wilt gebruiken
ctx.Roles.Attach(r);

het is eerder zo dat je zou schrijven:

ctx.Roles.Add(r);

en dan zou je je kunnen omdraaien en schrijven

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

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

Het probleem dat uw eerste voorbeeld heeft, is dat deze nieuwe rol echt nieuw is voor de DB, dus het toevoegen ervan is niet wat u zou willen doen, maar u zou het eerder willen toevoegen.

En de enkele aanroep van ctx.SaveChanges() zou hier prima moeten werken.




  1. Een Unix-tijdstempel converteren naar een datum/tijd-waarde in SQL Server

  2. psql:kan geen verbinding maken met server:verbinding geweigerd Fout bij verbinding met externe database

  3. Updates voor het JSON-veld blijven niet bestaan ​​in DB

  4. Hoe PostgreSQL-enum in kaart te brengen met JPA en Hibernate