Sempre que estamos desenvolvendo um novo aplicativo, nos deparamos com alguma informação que precisará ser salva em algum local para ser recuperada posteriormente, pode ser uma configuração, um dado de autenticação, enfim, geralmente os aplicativos tem por objetivo manipular e gerar informações.

Nesse momento você pode optar por inúmeras opções existentes atualmente, desde o bom e velho arquivo de texto até um sistema de banco de dados relacional. Mas em algumas situações, o cliente não quer seus arquivos salvos como texto comum, mas também não dispõe de demanda para instalação de um servidor de banco de dados, é nessa hora que alguns desenvolvedores optam por utilizar as versões de banco de dados compactas, dentre essas, uma das mais completas é a SQL Server CE – Compact Edition. Ele é uma versão reduzida, mas bem funcional, do já consagrado e difundido SQL Server. A versão compacta é muito utilizada para smartphones, pockets PC’s e softwares que trabalham off-line e fazem sincronização com bases maiores. As vantagens são que além de ter seus dados salvos com mais segurança do que armazenando eles como texto comum, o SQL Server CE contempla algumas ferramentas integradas ao ambiente .Net para desenvolvimento rápido utilizando o Entity Framework, DataSets e DataSources, e permitem consultas com Querys.

Agora que você já sabe quando decidir utilizar uma versão Compact do SQL Server, porque não aprender de forma simples como criar um cadastro básico utilizando ADO.Net Entity Framework. Você vai ver que é rápido e não dói nada. Antes de colocar a mão na massa, tenha em mãos a versão mais recente do Visual Studio 2012, existem diversos downloads para quem quer estudar, e você pode encontrar fazendo uma rápida busca no site da Microsoft. Se você não quer ter esse trabalho, aqui vai um link: http://www.microsoft.com/visualstudio/ptb/products/visual-studio-express-products. Instalando a versão Express 2012, você já vai conseguir um ambiente configurado para seguir nosso tutorial.

Vamos fazer da forma mais simples, crie um novo aplicativo do tipo Windows Forms, aqui fio escolhida a linguagem C#, mas você pode optar por VB.NET também, fica a sua escolha.

Criando a nova aplicação

Figura 1: Criando a nova aplicação

Já temos o nosso projeto criado, então vamos começar adicionando nosso banco de dados local, é mais simples que decorar o PI. Clique sobre o projeto e selecione Add > New Item, na janela que aparecer, escolha o subgrupo Data e clique sobre Local Database. No campo abaixo nomeie seu novo banco de dados, aqui deixaremos tudo padrão. Ao clicar em Add, você verá uma tela pedindo para criar o seu DataSource, calma que ai você vai precisar fazer uma escolha. As duas opções disponíveis atualmente são Dataset e Entity Data Model. Os Dataset’s são velhos conhecidos dos desenvolvedores .NET, mas nosso foco aqui fica com o Entity Data Model e o Linq, então selecione a opção Entity Data Model.

Criando um banco de dados local

Figura 2: Criando um banco de dados local

Selecionando o tipo da fonte de dados

Figura 3: Selecionando o tipo da fonte de dados

Bem, a tela a seguir pergunta se você deseja gerar o Entity Model do seu banco de dados. Bem, nesse momento ainda não, pois nosso banco de dados está vazio, então selecionamos Empty Model.

Selecionando o tipo de modelo

Figura 4: Selecionando o tipo de modelo

Hora de criar uma tabela de teste, você pode optar por criar pelo Model e atualizar o banco de dados ou criar diretamente no banco e atualizar o Model. Vamos fazer da segunda forma para exercitar o ambiente de edição do SQL Server CE. Recapitulando, até agora criamos o banco de dados e um DataSource do tipo Entity Data Model.

No lado esquerdo do seu Visual Studio 2012, vai existir uma guia chamada Server Explorer, abra ela e verifique que uma conexão para o banco de dados local foi criada:

Tabelas no Server Explorer

Figura 5: Tabelas no Server Explorer

É nessa parte que vamos criar nossa tabela, clique com o botão direito sobre Tables Criação de nova tabela

Figura 6: Criação de nova tabela

Preencha com algumas informações, esse exemplo, estamos criando uma tabela chamada “contato” e adicionando apenas três atributos de contato, ID, Nome, Telefone. Tudo bem simples.

Definição dos campos da tabela

Figura 7: Definição dos campos da tabela

Pressione OK e você acabou de criar sua primeira tabela. Até aqui nenhuma surpresa. Agora vamos voltar ao Model. Abra o Entity Model e temos agora que adicionar a tabela que acabamos de criar no banco. Ainda bem que o Visual Studio já tem um recurso que facilita isso para nós, vamos utilizar o Update Model from database, com essa funcionalidade, o Model vai herdar as propriedades do banco selecionado. Então vamos lá, pressione o botão direito sobre qualquer are vazia do Model e no menu de contexto que aparecer, clique sobre Update Model from database.

Atualizando o modelo a partir do banco

Figura 8: Atualizando o modelo a partir do banco

Feito isso, uma janela Wizard irá aparecer, não precisa fazer quase nada, apenas selecionar a tabela que deseja adicionar e concluir:

Configuração da conexão

Figura 9: Configuração da conexão

Selecionar as tabelas do modelo

Figura 10: Selecionar as tabelas do modelo

Tabela no editor visual do modelo

Figura 11: Tabela no editor visual do modelo

Já temos nossa classe criada no Model, ela agora é um objeto que representa nossa tabela no banco, é a partir desse conceito que trabalhamos com Linq para fazer nossas consultas, inserções e atualizações básicas, um CRUD bem fácil de se fazer.

Então vamos criar um formulário simples com dois campos de texto para entrada do nome e telefone do contato e um botão gravar:

Layout do formulário

Figura 12: Layout do formulário

Não vai ganhar o prêmio de designer, mas já serve para nosso propósito. Dê dois cliques sobre o botão Gravar e vamos gerar nosso evento, é nele que faremos nosso código de inserção. Acompanhe o código linha a linha:

Listagem 1: Adicionando novo contato


private void button1_Click(object sender, EventArgs e)
{
	Model1Container Context = new Model1Container();
	using(Context)
	{
		Contato Entity = new Contato();
		Entity.nome = txtNome.Text;
		Entity.telefone = txtTelefone.Text;
		
		Context.Contato.Add(Entity);
		Context.SaveChanges();
	}

	MessageBox.Show("Salvo com sucesso!");
}

Se você não alterou nada no seu Model, ele deve se chamar Model1Container, então na linha 3 estamos criando uma instância dele e a nomeamos de Context.

Seguindo, veja como nossa tabela Contato já existe como classe do projeto, na linha 6 criamos uma instância de Contato com o nome de Entity.

Agora que Entity possui as propriedades de Contato, muito fácil, é só preencher os dados com os campos de texto. Como você pode ver nas linhas 7 e 8.

Na linha 10 estamos dizendo ao framework para adicionar ao Contato um novo objeto e na linha 11 invocamos o método SaveChanges() que persiste as alterações no nosso banco de dados.

Se você seguiu o passo a passo de forma correta, ao compilar o projeto será possível incluir os dados dos contatos e persistir no banco de dados local para recuperá-los depois.

Por enquanto vamos ficar só na inserção para você absorver o conceito.

Até mais, pessoal .