EF9 - Edit Navigation Property (relação 1:n)

15/08/2014

0

Boa tarde,

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

João Effting

Responder

Posts

15/08/2014

Joel Rodrigues

Como você está alterando o Professor?
Responder

15/08/2014

João Effting

Eu recupero o id do novo professor, e dentro do Edit eu faço uma busca para preencher o restante da classe com os dados desse professor.

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();
Responder

18/08/2014

Joel Rodrigues

No seu código, onde está o Id do novo professor? Eu estou entendendo, pelo seu código, que você está atribuindo o próprio Professor que já faz parte do aluno.
Responder

19/08/2014

João Effting

Bom dia Joel,

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 :\
Responder

19/08/2014

Joel Rodrigues

Estranho.
Vou fazer um teste aqui e verificar se consigo simular o problema. Qualquer coisa, volto aqui para avisar.
Responder

20/08/2014

João Effting

Ok, fico no aguardo.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar