Postagens

Mostrando postagens com o rótulo SQL Server

Log de auditoria com o Entity Framework 6

Imagem
Uma das novidades no Entity Framework 6 é a possibilidade de interceptar os comandos SQL que são gerados pela ferramenta de forma bem mais simples que nas versões anteriores. Isso permite, entre outras coisas, efetuar um log de tudo o que é enviado para o banco de dados, facilitando a depuração das aplicações. Mas hoje vou mostrar uma outra coisa bem interessante que podemos fazer ao interceptar o SQL do Entity Framework: log de auditoria. Ou seja, ter a rastreabilidade do que cada usuário fez no sistema, em determinado momento. A ideia central aqui é, para cada atualização de um registro no banco de dados (seja uma inserção, alteração ou exclusão), armazenar essa versão junto do usuário e data e hora de modificação. Vamos olhar a tabela da imagem abaixo, People (à esquerda). Ela possui as colunas Id, FirstName, LastName e Age. Até aí, nada de mais. Agora vamos ver uma outra tabela de mesmo nome, só que criada em um schema diferente (hist). Ela possui as mesmas colunas, com os...

Paginação de registros no SQL Server

Imagem
Hoje vou comentar uma solução para paginar dados no SQL Server. A paginação é útil quando precisamos retornar uma grande quantidade de informações pouco à pouco. Vamos supor que tenhamos que trafegar 100.000 registros através de uma chamada de web service. Dependendo da rede e do tamanho dos dados, podemos ter problemas se tentarmos passar todos esses dados de uma vez só (problemas do tipo cair a rede no meio da transferência e perdermos todo o trabalho). Ao invés disso, podemos tentar passar 5.000 em 20 vezes, ou seja, em 20 páginas. Isso também é válido quando precisamos apresentar muita informações na tela do usuário, e ao invés de trazer todos os registros, trazemos eles pouco à pouco de forma que permita a análise da pessoa. Nas situações acima, poderíamos carregar todos os registros em memória e nós mesmos fazermos a paginação, só que isso é ruim visto que vamos alocar todas as informações na memória sendo que só iremos utilizar uma pequena fração dela. Para resolver...