EF9 - Edit Navigation Property (relação 1:n)
15/08/2014
0
alguém já teve este problema e soube como resolver?
No meu método Edit, eu faço o seguinte
db.Entry(aluno).State = EntityState.Modified;
db.SaveChanges();
dentro da tabela aluno, eu tenho um Professor, que é a relação. Ali, ele já tá com o professor alterado (modifiquei o professor X, do aluno, para Y).
Mas ele não faz a alteração na base :(((
Já tentei diversos exemplos que procurei na internet, mas nenhum resolveu esse problema.
abs,
João
João Effting
Posts
15/08/2014
João Effting
basicamente isso, dentro do Edit
//Aqui, dentro de aluno.Professor, eu só tenho o idProfessor do novo professor.
aluno.Professor = db.PROFESSORES.Where(w => w.idProfessor == aluno.Professor.idProfessor).FirstOrDefault();
db.Entry(aluno).State = EntityState.Modified;
db.SaveChanges();
18/08/2014
Joel Rodrigues
19/08/2014
João Effting
então, eu fiz baseada nessa video aula do Guinter, e uma outra que era de relacionamento 1:n (busca tá fora pra mim, dai não tô conseguindo acessar o endereço do segundo video)
https://www.devmedia.com.br/relacionamentos-n-para-n-com-ef-entity-framework/30816
Como ele fez ali, não existe um idProfessor dentro do Aluno, porque fica abstraido, e o Entity se encarrega do resto (quando é criado no banco, dai sim existe o idProfessor na tabela de aluno). E faz isso mesmo, porque quando eu cadastro o Aluno, e digo qual é o professor, eu só passo pra Aluno.Professor, o professor que ele escolheu. E funciona perfeitamente. Eu andei pesquisando, e outras pessoas tiveram esse mesmo problema que eu, que ao editar uma classe que tenha esse tipo de mapeamento, não atualiza as Navigations Propertys. Alguns até recomendaram o nHibernate, porque lá isso funciona perfeitamente. Eu, como já tô em uma fase avançada do projeto, manterei o Entity. Mas para o próximo, vou testar o nHibernate. Ou vou fazer com os ids na própria tabela mesmo.
Mas, para agora, a solução vai ser alterar na mão mesmo com native sql, porque é uma restrição do EF :\
19/08/2014
Joel Rodrigues
Vou fazer um teste aqui e verificar se consigo simular o problema. Qualquer coisa, volto aqui para avisar.
Clique aqui para fazer login e interagir na Comunidade :)