Linq to SQL – Catalogando Log (SQL query/Command) do Linq em arquivos externos

Standard

Um recurso bem interessante que temos no Linq (toSQL e Entity), é a possibilidade de catalogar e analisar as queries que são geradas. Ou seja, como o linq gerencia a forma de geração do código SQL/command a ser executado efetivamente na base de dados, podemos com este recurso, verificar se nossa query linq está sendo processada da melhor forma possível e com a melhor performance.

Para tanto, vamos primeiramente criar uma estrutura para a realização de uma query bem simples, veja:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Cria contexto de dados
DBDataContext _db = new DBDataContext();

// Efetua uma query
var query = from p in _db.Produtos
where p.valor.HasValue
select p;

// Registra LOG com a query gerada pelo LINQ
_db.Log = new LogQueryLinq();

// Percorre a query e mostra ao usuário cada produto
foreach (var p in query)
Console.WriteLine(string.Format("Produto:{0} | Valor Total{1}", p.nome, p.valor ));

Continue reading

Criando um repositório genérico para Entity Framework

Standard

Irei demonstrar aqui uma forma bem simples e rápida para implementarmos um repositório genérico com Entity Framework. A ideia de implementação será a mesma utilizada com Linq to SQL, ou seja, nosso repositório será responsável por realizar apenas quatro operações: Selecionar os dados, salvar, apagar e atualizar.

Vamos primeiramente criar uma interface para o repositório:

public interface IRepositorio
{
	void Atualiza();

	void Apaga<TEntidade>(TEntidade entidade) where TEntidade : class;

	void Salva<TEntidade>(TEntidade entidade) where TEntidade : class;

	IQueryable<TEntidade> Seleciona<TEntidade>() where TEntidade : class;
}

Continue reading