Muitos já devem ter ouvido falar das novidades que o VS2010 está disponibilizando, bem como as diversas features do novo Entity Framework 4 (entenda que não é a versão 4.0 do Entity Framework, tendo em vista que a primeira versão saiu junto com o SP1 do Visual Studio 2008, a versão atual é a 2.0, contudo, a comunidade adotou chamar de EF4, para acompanhar a versão do Framework .Net 4.0).

Bom, então vamos deixar um pouco a história da nomenclatura do EF4, de lado e vamos começar a falar um pouco sobre POCO. Mas, o que significa POCO (Plain OLD CLR Object), ou seja, são classes de domínio - quando eu falar sobre classes de domínio, entendam como sendo as classes que fazem parte do domínio do seu negócio: Cliente, Funcionário, Empresa, Pessoa e etc, onde estas não precisam ser configuradas com atributos, ou precisam ter qualquer vínculo que seja com algum outro framework. As classes POCO, são estruturas de domínio que possuem apenas atributos e/ou métodos, apenas. Para um melhor entendimento sobre o que é um POCO, acrônimo advindo do POJO (Plain OLD Java Object), criado por Martin Fowler, você pode acessar o link: http://en.wikipedia.org/wiki/Plain_Old_CLR_Object.

Vamos falar um pouco das mudanças que tivemos com o lançamento desta nova versão do EF4 em relação a primeira versão. Nesta nova versão do Entity Framework, tivemos o ganho de trabalhar com Model-First. O que isso representa para a nova versão? Bem, antes nós tinhamos o modelo Database-First, o qual nos forçava a pensar primeiramente no banco de dados, tendo uma Base de dados bem definida para que pudessemos criar o mapeamento ORM do Entity Framework com a base de dados; contudo, poderiamos ter alterações na base de dados e atualizar o modelo. Com o estilo Model-First, ou seja, agora estamos pensando não mais em registros e colunas do banco de dados, e sim em modelo de classes de domínio, o que chamo de Modelo de Domínio. Um Modelo de Domínio, é a caracterização das classes, as quais compõem a estrutura real da aplicação, onde temos todas as classes negociais do mundo real do sistema.

Então, como é que o Model-First trabalha? Isso quer dizer que não mais precisamos criar um EDMX? Como é que fica a questão do ObjectContex? o EDMX vai ficar maior do que era antes? Como vai se dar o mapeamento dessas nossas classes com o banco de dados? Bom, para responder à todas essas perguntas, que são bem comuns nesse primeiro contato com as novidades, estarei criando uma aplicação simples, para mostrar como podemos utilizar o conceito de classes POCO, em uma aplicação console utilizando o EF4.

Let´s start :D

Vamos então abrir o nosso VS2010. Assim que o seu VS estiver aberto, vá até o menu File -> New Project como segue a imagem abaixo:


Na coluna da esquerda, selecione Windows, na coluna do meio, onde encontram-se os templates para os diversos tipos de projetos Windows, selecione Console Aplication e no campo Name coloque o nome do seu projeto como DPWEF4 (DPW = Desenvolvimento para Web) e clique no botão OK. O visual studio irá criar todo o seu projeto console.


Com o seu projeto console criado, agora iremos começar a montar a estrutura do EF4. Antes de mais nada, gostaria de lembrar e deixar claro, que este é um post de introdução ao EF4, por isso nenhum tipo de estrutura em camadas será levado em consideração, para este Post. Este será um assunto para os próximos Posts envolvendo o EF4. Então, clique com o botão direito do mouse sobre o seu projeto, e selecione a opção: Add -> New Item, como mostrado na figura abaixo:



Após ter selecoinado esta opção será apresentada a tela para selecoinarmos o template do Entity Framework, como segue na imagem abaixo:



Selecione o template ADO.NET Entity Data Model e dê o seguinte nome para o arquivo edmx: DPWEF4Model. Clique em Add, e o visual studio exibirá uma nova tela para selecionarmos qual o tipo do modelo que iremos criar: Database-First ou Model-First. Para o nosso exemplo, iremos selecoinar o Model-First (Empty Model), como mostra a imagem abaixo:



Clique em Finish, e o visual studio irá criar uma área em branco, para que possamos começar a criar o nosso modelo de domínio. Contudo, precisamos fazer uma pequena alteração nas propriedades do nosso arquivo .edmx, como segue mostrando a imagem abaixo:



Na propriedade Code Generation Strategy iremos mudar o tipo da propriedade de Default para None, ou seja, estamos informando para Entity Framework que qualquer alteração no nosso modelo de domínio .edmx (onde se encontrarão todas as nossas entidades (classes) de domínio, não será criado nenhum código dentro do arquivo xxxxx.Designer.cs do nosso EDMX, tendo em vista que todas as classes físicas (arquivos .cs) serão criadas por nós, desenvolvedores. Feito isso, tecle CTRL+Shift+B para compilarmos o nosso projeto. Se você seguiu todos os passo-a-passo até agora vai compilar com sucesso a aplicação.


Vamos agora, para a parte que, acredito eu - até porque eu fiquei bastante ancioso quando estava estudando as novidades do EF3, todos estavam esperando, que é a criação das classes POCO, que diga-se de passagem é bastante simples. Clique com o botão direito do mouse na parte Branca do seu arquivo edmx e selecione a opção: Add -> Entity, será exibida a tela abaixo:



Para configurar a classe, neste primeiro instante, alteraremos o campo Entity Name para Usuario e o campo Entity Set para Usuario também, atente-se para um detalhe, desde já, o que for informado no campo Entity Set, será criado no banco de dados, ou seja, se eu Informar UsuarioDoSistema, por exemplo, será criada uma tabela no banco de dados, com o nome: UsuarioDoSistema, então, por isso que estamos repetindo o conteúdo do campo Entity Name, no campo Entity Set. Feito, isso, pode clicar em OK, que o visual studio criará, na surface do edmx, a entidade Usuario, com o atributo Id, apenas, como mostrado na imagem abaixo:



Após a classe criada, vamos selecionar a entidade Usuario, clicar com o botão direito do mouse e selecoinar a opção Add -> Scalar Property, a qual adiciona um atributo para a classe selecionada. Abaixo segue uma imagem com os atributos já criados para a nossa classe Usuario. Segue imagem:



Os atributos criados são:

Login do tipo String, com a propriedade Max Length setada para 15

Senha do tipo String, com a propriedade Max Length setada para 15

Nome do tipo String, com a propriedade Max Length setada para 100

DataInclusao do tipo DateTime


Todos estes campos, estão com a propriedade Nullable configurada para false, ou seja, todos estes campos são OBRIGATÓRIOS. Tendo absorvido todo o entendimento, inicial, sobre esta parte, você pode ir até o arquivo DPWEF4Model.Designer.cs e verificar que não existe nenhuma codificação gerada pelo Visual Studio e pelo Entity Framework. Então, para que possamos criar nossa classe POCO, clique com o botão direito do mouse sobre o seu projeto e adicione uma classe chamada: Usuario. Abaixo segue o código desta classe criada:


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace DPWEF4

{

public class Usuario

{

public virtual int Id { get; set; }

public virtual string Login { get; set; }

public virtual string Senha { get; set; }

public virtual string Nome { get; set; }

public virtual DateTime DataInclusao { get; set; }

}

}


Você deve estar se perguntando, do porque que em todos os atributos eu coloquei a palavra-reservada virtual. Isso se dá devido ao EF4, criar classes Proxy, por trás dos bastidores, e é por meio dos atributos virtual, que conseguimos realizar o Lazy Loading. Não iremos entrar no mérito deste assunto neste artigo. Pronto, agora temos nossa classe POCO criada, será que já podemos começar a programar e usar esta nossa classe? A resposta é NÃO. Ainda não podemos utilizar esta classe em nossa aplicação de exemplo. Como falei, anteriormente, nenhum código foi criado para o nosso arquivo .edmx, o que nos obriga a criar um arquivo de classe para o nosso ObjectContext. Classe que gerenciará o nosso Contexto do EF4.


Então, vamos criar uma nova classe para o nosso projeto, com o nome MeuContexto herdando de ObjectContext, como segue no código abaixo:


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data.Objects;


namespace DPWEF4

{

public class MeuContexto : ObjectContext

{

public MeuContexto()

: base("name=XXXX", "XXXX") { }


private IObjectSet<Usuario> _usuario;

public IObjectSet<Usuario> Usuario

{

get

{

if (_usuario == null)

_usuario = CreateObjectSet<Usuario>();


return _usuario;

}

}

}

}


Não se preocupe com os XXXX na string de conexão para a nossa classe de contexto. Agora que já temos nosso contexto criado podemos começar a programar nossa aplicação de exemplo, certo? Quase isso! Agora precisamos criar nossa base de dados, para que o nosso contexto e nossa classe de domínio possam, de fato, ter algum sentido em nosso sistema e o nosso contexto possa materializar os dados do banco de dados, em classes de domínio e possa persistir os objetos no banco de dados. Então, para gerarmos o nosso script do banco de dados, com base no nosso modelo de domínio, iremos voltar ao nosso arquivo DPWEF4Model, clicar com o botão direito do mouse na parte branca e iremos selecionar a opção: Generate Database from Model...

Selecionando esta opção, o visual studio exibirá uma tela para que você possa selecionar qual database será utilizada para criar as tabelas com base no nosso modelo de domínio. Então, vamos seguir os passos das imagens a seguir, para criarmos a conexão e as configurações:


Clique no botão New Connection, será exibida a tela a seguir:



Informe no campo Server Name o nome da instância do seu SQL Server. No nosso exemplo informamos .\SQLEXPRESS, pois estamos pegando a instância local do SQL Server que está executando no meu computador. No campo Select or enter a database name, selecione a database vazia que criamos para este projeto, chamada: DPWEF4 e clique em OK. O visual studio retornará para a tela apresentada abaixo:



As áreas marcadas em vermelho, são para mostrar como é que fica a configuração de conexão do EDMX para que possamos informar a string de conexão para a nossa classe MeuContexto. Clique em Next. O visual studio exibirá a seguinte tela, mostrando o Script do Banco de dados gerado:



Clique em Finish, para que a IDE do VS possa criar um arquivo .sql e abrir este arquivo na IDE para que este possa ser aplicado no banco de dados que configuramos, como mostrado na figura abaixo:



Com esse arquivo gerado, você clicará no botão marcado em vermelho na imagem acima. Ao clicar neste botão, será exibida a tela de login com o SQL Server, para que o script possa ser aplicado ao banco de dados selecionado. Como segue nas imagens a seguir:




Pronto. Agora a nossa tabela Usuario já foi criada no banco de dados, seguindo nossas configurações do Modelo de Domínio. Como mostrado na imagem abaixo, com a tabela já no banco de dados:



Agora vamos codificar nosso métod Main, do arquivo Program.cs, para concluirmos nosso artigo. A código do método Main, segue abaixo:


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace DPWEF4

{

class Program

{

static void Main(string[] args)

{

MeuContexto meuContexto = new MeuContexto();


Usuario usuario = new Usuario();

usuario.Login = "Roberto";

usuario.Senha = "R0b34t0";

usuario.Nome = "José Roberto Aráujo";

usuario.DataInclusao = DateTime.Now;


meuContexto.AddObject("Usuario", usuario);

meuContexto.SaveChanges();

}

}

}


Você pode estar se perguntando, neste passo final do arquivo: Porque foi utilizado o método AddObject, passando como parâmetro uma string e o objeto usuario? Bem, esta é uma das maneiras que temos de adicionar um novo Objeto ao contexto, e este persistir no banco de dados - Lembrando que a String "Usuario" tem que ser o mesmo valor que foi definido quando estamos criando o nosso modelo de domínio no edmx, ou seja, o valor informado no campo Entity Set é o valor que tem que ser informado nesta String. Executando este bloco de código do Método Main, você pode observar que os dados foram gravados no banco de dados, como mostrado na imagem abaixo:



Bom, então é isso pessoal!

Espero que tenham gostado do passo-a-passo incial, sobre como trabalhar com Classes POCO dentro do EF4. No nosso próximo Artigo, estarei apresentando como podemos trabalhar com relacionamentos One-To-Many.


Até o próximo!


Aprofunde seus conhecimentos sobre esse tema na comunidade ADO.NET

Exibições: 171

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

© 2018   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço