Problema com EntityFramework - An entity object cannot be referenced by multiple instances of IEntityChangeTracker

15/05/2018

10

Um um projeto onde um dropdownlist é carregado com as seguintes instruções:

var lista = entities.prato.OrderBy(x => x.nome).ToList();
combo.DataTextField = "nome";
combo.DataValueField = "id";
combo.DataSource = lista;
combo.DataBind();

Depois preciso recuperar o item do dropdownlist e utilizar para criação de um registro, para recuperar o item eu utilizo a seguinte linha:
ingrediente i = entities.ingrediente.Find (Convert.ToInt32(combo.SelectedItem.Value));

Quando tempo salvar o registro da seguinte forma:

ingrediente_prato ip = new ingrediente_prato();
ip.prato = (prato)Session["pratoSelecionado"];
ip.ingrediente = i;
entities.ingrediente_prato.Add(ip);
entities.SaveChanges();

é retornado o seguinte erro:
An entity object cannot be referenced by multiple instances of IEntityChangeTracker

Alguém tem alguma sugestão?
Responder

Posts

16/05/2018

Celio Miller

Ola nessa linha (ip.prato = (prato)Session["pratoSelecionado"];) que informação esta tentando salvar, pois quando voce usa este codigo ele esta pegando o objeto todo que esta na seção então se você colocar um ponto exemplo: vamos dizer que você quer pegar o codigo do objeto na seção ficaria assim (ip.prato = (prato)Session["pratoSelecionado"].codPrato); ai nao sei como esta sua tabela. veja se é isso que precisa, pois eu faço isso e tive o mesmo problema peao o meu pra ter uma ideia eu tinha que pegar o codigo do cliente na seção para listar as comprar que pertencia ao mesmo ai ficou assim pra pegar o codigo dele repare que e o mesmo do seu so vou mudar pra ter uma base.

meu caso: pegando o codigo do usuario que esta na seção:
codUser = (CLIENTE)Session["cliente"].codCliente;

bem espero que tenha ajudado se resolveu ou continuar o erro so postar ai vejo se posso continuar ajudando abraços. Sucesso.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar