sql >> Databáze >  >> RDS >> Oracle

Oracle ODP.Net a EF CodeFirst – chyba SaveChanges

Nápad s Attach() metoda je, že máte entitu, o které je známo, že je v DB, ale není sledována tímto kontextem, že? Moje otázka na vás zní, zda jistě víte, že tato role zde:

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

je něco, co už existuje? Pokud ne, nemyslím si, že byste chtěli použít

ctx.Roles.Attach(r);

spíše je to tak, že byste napsali:

ctx.Roles.Add(r);

a pak se můžete otočit a psát

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

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

Problém vašeho prvního příkladu je ten, že tato nová role je v DB skutečně nová, takže její připojení není to, co byste chtěli udělat, spíše byste ji chtěli přidat.

A jediné volání ctx.SaveChanges() by zde mělo fungovat dobře.




  1. Jak zabránit selhání úlohy FTP SSIS, když nejsou žádné soubory ke stažení?

  2. Jak funguje funkce POSITION() v MySQL

  3. mysql_insert_id alternativa pro postgresql

  4. Základní monitorování PostgreSQL – část 3