.NET

18 fev, 2013

Utilizando Entity Framework com SQL CE

Publicidade

Às vezes vejo gente perguntando sobre a utilização de Entity Framework, principalmente sob a modalidade de Code First, com Sql Server Compact Edition. Veremos agora como é muito simples.

O Microsoft SQL Server Compact Edition

Essa é a menor e mais simples versão do Sql Server, na qual seus dados são salvos em um arquivo .sdf, diferente do arquivo .mdf que precisa ter o Sql Server instalado na máquina.

É uma versão recomendada para aplicações do antigo Windows Mobile, ou outra pequena aplicação que não precise de todos os recursos do Sql Server. É uma versão então embedded, ou seja: você só precisa adicionar o arquivo.

Além de ser embedded e simples essa versão tem como um bom atrativo ser gratuita. Porém não é recomendado para algo mais robusto, pois ele suporta somente o uso de até 4GBde dados. Também suporta até 256 conexões simultâneas (então não use em um site muito visitado, por exemplo), entre outras limitações.

Junto com a versão 4 do .Net framework foi lançado o SQL CE 4.0 com algumas melhorias de performance comparadas ao sucessor 3.5, que tinha como sina alguns problemas com identity.

Usando o EF com SQL CE

O EF desde sua versão 4 suporta trabalhar com SQL CE tanto no model first, database first e code first. Os passos para model e database first são simples:

  • Adicione o edmx no seu projeto
  • Selecione a conexão com a base de dados. Possivelmente aqui você não vai encontrar o conector para a versão 4.0, então escolha a 3.5
  • Depois de terminado sua modelagem/pegar o modelo do sql vá no seu web.config
  • Na string de conecção do seu emdx troque a propriedade ProviderManifestTokende 3.5 para 4.0

Voilá!

Mas o mais legal é pensar em usar EF com Code First! Para isso é ainda mais simples: só usar Database.DefaultConnectionFactory apontando para o SqlServer Ce:

Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");

Voilá!

Assim você pode usar em códigos de bibliotecas ou em aplicações não-web, lembrando que ela deve ser chamada antes de começar a vida do seu contexto. No asp.net mvc você pode iniciarlizar no método Application_Start() (veja ele no Global.asax).

Baixe os exemplos (de graça)

Exemplouma solution com dois projetos, um rodando na windows console e outro rodando num asp.net mvc na MSND Gallery.

E é isso pessoal, até a próxima!