quarta-feira, fevereiro 17, 2010

Linq To SQL - Carregando dados adjacentes e liberando o DataContext

Eu sempre tive problemas quando tentava acessar uma tabela adjacente do objeto retornado pela query do linq depois do dispose, exemplo:
A tabela Documento tem relação com a tabela Tipo de Documento, se eu recupero via Linq uma instancia da tabela Documento, faço o dispose do DataContext e tento acessar a Tipo Documento atravez do relacionamento logo vem a mensagem: Cannot access a disposed object.Object name: ‘DataContext accessed after Dispose.
Descobri uma forma de resolver isso. Se a relação for de 1 pra N e você está com a tabela do lado esquerdo, basta que antes do dispose você acessece Documento.TipoDocumento.Load(). Se estiver do lado do N o jeito é passar configurações de load pro DataContext, exemplo:

DataLoadOptions options = new DataLoadOptions();


options.LoadWith<Documento>(s => s.TipoDocumento);

DataContext.LoadOptions = options;
É isso ai, vivendo e aprendendo Linq!

Nenhum comentário: