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!

quarta-feira, fevereiro 03, 2010

SHRINKFILE - TRUNCATE do banco

use db_MeuBanco

 BACKUP LOG db_MeuBanco WITH TRUNCATE_ONLY

 DBCC SHRINKFILE (db_MeuBanco_Log, 1)


**Cuidado, só recomendo rodar isso se você estiver realmente sem espaço na partição do LOG (.mdl) e não tiver outra partição pra onde jogar nem fazer backup.