Salvando imagens no banco com C#, Entity e SQL Server

De tão rápido que será este post, está mais para uma dica do que um tutorial.

Num projeto recente, precisei salvar imagens no banco usando o SQL Server Express e o Entity Framework. Então aqui vai minha dica para quem também precisa.

Preparando o modelo

Levando em conta o SQL Server, para salvar imagens numa tabela é preciso definir o tipo do dado como binário. Na sua classe, basta usar um array de byte.

public byte[] Imagem { get; set; }

Neste caso o Entity já entenderá que é um dado binário e criará a coluna na tabela corretamente.

Convertendo a imagem

A conversão é simples, basta utilizar os dois métodos abaixo.

public class Conversor
{
public static byte[] ImagemParaByte(Image imagem)
{
using (var stream = new MemoryStream())
{
imagem.Save(stream, ImageFormat.Png);
return stream.ToArray();
}
}

public static Image ByteParaImagem(byte[] bytes)
{
using (var stream = new MemoryStream(bytes))
{
return Image.FromStream(stream);
}
}
}

Então quando precisar converter o dado recebido do banco de dados basta usar o método ByteParaImagem. Quando precisar salvar, basta usar o método ImagemParaByte.

Simples não?

Até mais.