Array
(
)

Entity Framework

Osjunior
   - 16 mar 2011

Olá, pessoal.

Estou tendo alguns problemas em um projeto com Entity Framework. Ele está divido assim:
- Entidades do próprio EF
- Classe Context, responsável pela administração das entidades
- Classe BusinessObject abstrata, que serve de base para as demais classes de negócio
- Classes de negócio

Não vou dar tantos detalhes assim porque os erros (exceções) estão surgindo ao longo do desenvolvimento, ou seja, não são em locais específicos.

Alguém sabe me dizer por que os erros abaixo acontecem?

[1] A instância de ObjectContext foi descartada e não pode mais ser usada para operações que exijam uma conexão.
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

[2] Um objeto de entidade não pode ser referenciado por várias instâncias de IEntityChangeTracker.
An entity object cannot be referenced by multiple instances of IEntityChangeTracker.

[3] Não foi possível definir a relação entre os dois objetos porque eles estão anexados a diferentes objetos ObjectContext.
The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects.

Gostaria de soluções gerais para esses problemas. Já pesquisei em diversos sites (MSDN, Code Project, fóruns, etc.), mas não encontrei muita coisa que pudesse ajudar.

Grato desde já.

Leandro Leandro
   - 18 mar 2011

Caro Orlando,
Para os erros 1 e 3 , já aconteceu algo do tipo para mim, não foi o mesmo erro, mas parecido.

Tentou usar algo do tipo assim:
Usando o context como está abaixo, o dispose é chamado automáticamente quando fecha a chaves " } ", e quando vc está usando entre as chaves não há perigo para acontecer um dispose

Para o erro 1
 using (ObjectContext objectContext = new ObjectContext()){  aqui fica o código para tratar os dados... 
}
E para o erro 3, pode ser por causa está usando 2 objectContext e somente está definindo um.e pode usar assim:
      using (ObjectContext objectContext = new ObjectContext())                {               using (ObjectContext objectContext2 = new ObjectContext())                    {                ........ aqui pode tratar para os 2 context...     }

Espero ter ajudado...
Leandro

Osjunior
   - 22 mar 2011

Oi, Leandro.

Obrigado pela ajuda. Percebi que é isso mesmo o que você disse, mas os erros continuam por causa da estrutura que está a arquitetura da aplicação.

Saberia me indicar alguma boa estrutura para arquitetura com EF (digo, algum exemplo já pronto, com código, etc.)?

Maicomoreira
|
MVP
    24 jul 2016

Tô passando pelo mesmo problema 2: [2] Um objeto de entidade não pode ser referenciado por várias instâncias de IEntityChangeTracker.
An entity object cannot be referenced by multiple instances of IEntityChangeTracker.

Alguém sabe a causa e a soução?