Entity Framework 4.1 – Armazenamento de arquivos

No Entity Framework 4.1 o armazenamento de dados binários no banco de dados é mais simples. Antes, no LINQ to SQL, era preciso criar uma instância da classe System.Data.Linq.Binary, valorizá-la com os dados binários e atribuí-la a sua propriedade correspondente em nossa entidade. Agora este cenário é mais simples, pois para persistir dados binários é apenas preciso criar uma propriedade do tipo byte[] (byte array) e lhe atribuir os dados diretamente.

Nesta demonstração iremos armazenar dados de qualquer arquivo selecionado, através de uma caixa de dialogo, no banco de dados. Iremos armazenar em nossa tabela: nome do arquivo, caminho, extensão, um valor para checksum e sua representação em binários.

Um checksum (ou hash sum) é uma sequência de dados de tamanho fixo, calculada a partir de um conjunto de dados binários. É um conceito bastante utilizado em tarefas de armazenamento e transmissão de dados. Seu funcionamento se dá pela seguinte forma: 1 – Calcula-se o checksum; 2 – Executa-se o armazenamento ou a transmissão dos dados; 3 – Calculsa-se o checksum dos dados recebidos; 4 – Verifica-se se o checksum calculado antes do armazenamento/envio é o mesmo da recepção, se sim, então os dados trafegaram com sucesso, se não, ocorreu algum desvio ou perda de dados durante o tráfego.

Para o cálculo do checksum utilizamos o algoritmo MD5, existem outros algoritmos de Hash que são mais seguros e produzem sequências maiores (i.e SHA1, SHA256, SHA512). Mas para este exemplo o MD5 é suficiente.

Abaixo o algoritmo utilizado para gravação dos dados binários no banco de dados, além do checksum:

Aqui estão os códigos da classe Arquivo (a entidade que será persistida no banco de dados), a classe ContextoDados (classe que herda de DbContext e faz o papel de proxy para nossas requisições com o banco de dados), e a classe Config (que é responsável por acessar configurações de nossa aplicação, como por exemplo a string de conexão).

Detalhe importante, para a coluna que irá conter os dados binários, o Entity Framework 4.1 criou na tabela uma coluna do tipo varbinary(max).

 

Para fazer download do exemplo acessem http://code.msdn.microsoft.com/Entity-Framework-41-6a79eb9e

[]s e até o próximo!

Por
Fernando Henrique Inocêncio Borba Ferreira.

Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.