Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle ODP.Net e EF CodeFirst - Erro SaveChanges


A ideia com o Attach() método é que você tem uma entidade que é conhecida por estar no banco de dados, mas não está sendo rastreada por esse contexto, certo? Minha pergunta para você é se você tem certeza de que esse papel aqui:
Role r = new Role { ID = 1, Name = "Members" };

é algo que já existe? Se isso não acontecer, eu não acho que o que você quer fazer é usar
ctx.Roles.Attach(r);

antes é que você escreveria:
ctx.Roles.Add(r);

e então você poderia virar e escrever
User u = new User {
    Login = login,
    Password = password,
    Status = 1,
};

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

O problema do seu primeiro exemplo é que essa nova função é realmente nova para o banco de dados, portanto, anexá-la não é o que você gostaria de fazer, mas sim adicioná-la.

E a única chamada para ctx.SaveChanges() deve funcionar bem aqui.