sql >> Databasteknik >  >> RDS >> Oracle

Oracle ODP.Net och EF CodeFirst - SaveChanges Error

Idén med Attach() Metoden är att du har en enhet som är känd för att vara i DB men som inte spåras av detta sammanhang, eller hur? Min fråga till dig är vet du säkert att denna roll här:

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

är något som redan finns? Om det inte gör det, tror jag inte att det du vill göra är att använda

ctx.Roles.Attach(r);

snarare är det så att du skulle skriva:

ctx.Roles.Add(r);

och så kunde man vända sig om och skriva

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

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

Problemet med ditt första exempel är att den här nya rollen verkligen är ny för DB, så att bifoga den är inte vad du vill göra, snarare skulle du vilja lägga till den.

Och det enda anropet till ctx.SaveChanges() borde fungera bra här.




  1. Lägga till en en-av-två inte null-begränsning i postgresql

  2. Hur får jag MySQL att använda ett INDEX för visningsfråga?

  3. ODP.NET Managed - Det går inte att hitta efterfrågad .Net Framework-dataleverantör

  4. DATETIME2FROMPARTS() Exempel i SQL Server (T-SQL)