ASP .NET - Usando os recursos do Entity Framework 4 : First-Model e CRUD


O objetivo deste artigo é mostrar como usar os recursos do Entity Framework 4 como o First-Model e realizar as operações CRUD.

Este artigo foi baseado no artigo: ASP NET 4.0 and Entity Framework 4 - Perform CRUD Operations

Embora eu ja tenha tratado de ambos os assuntos este artigo trás um novo enfoque e usa uma aplicação ASP .NET.

O objetivo é criar um ADO .NET Entity Data Model(EDM) usando o Entity Framework 4 (EF4) partindo de um modelo de entidades vazio , modelar as entidades e então criar as tabelas do banco de dados com base no modelo de entidades criado no EDM, na seqüência vamos mostrar como modificar, alterar e excluir dados da nossa base de dados.

Para isso temos que usar o Visual Studio 2010 , então vamos lá...

Primeiro vamos criar o modelo de entidades e em seguida mostrar como realizar as operações CRUD em uma aplicação ASP .NET.

Criando uma nova solução no VS 2010
1- Abra o Visual Studio 2010 (estou usando a versão Professional de avaliação)
2- Clique no link New Project na página inicial. Isso abrirá a caixa de diálogo;
3- Clique no item Visual Basic para expandir os templates instalados;
4- Selecione o template ASP .NET Web Application;
5- Informe o nome Agenda e clique em OK;
Criando um Entity Data Model (EDM)

Vamos criar um EDM a partir de um modelo vazio onde iremos modelar o domínio Clientes e Endereços onde um cliente pode ter mais de um endereço.

1- Clique com o botão direito sobre o projeto Agenda na janela Solution Explorer e selecione Add New Item;
2- Na guia Data selecione o template ADO .NET Entity Data Model;
3- Informe o nome Agenda.edmx e clique no botão Add;

O assistente Entity Data Model abrirá  a janela para selecionar um modelo:

Selecione a opção Empty Model e clique no botão Finish;

O arquivo Agenda.edmx será incluído no seu projeto e será exibido no descrito do Entity Framework:

Vamos agora definir as entidades e as associações. Nosso modelo de domínio será definir as entidades Clientes e Endereços e seu relacionamento.

Vamos começar criando a entidade Cliente:

Criando a entidade Cliente e um tipo complexo(Complex Type)

Clique com o botão direito na área vazia do Descritor Entity Data Model para Agenda.edmx e selecione a opção Add -> Entity;

A janela Add Entity irá surgir;

Por padrão será criada uma chave primária chamada Id. Vamos aceitar este padrão e clicar no botão OK;

A entidade Cliente será incluída no Entity Diagram vamos agora incluir propriedades na entidade;

As propriedades irão ser mapeadas para os campos da tabela vamos então incluir as propriedades Nome e Email;

Clique com o botão direito sobre a entidade e selecione : Add -> Scalar Property;

A seguir altere o nome de Property para Nome e mude o valor da propriedade Max Length para 50 na janela de propriedades;

Repita o processo e inclua a propriedade Email  com Max Lenght igual a 100 conforme a figura abaixo:

Nosso próximo passo é incluir as propriedades data de inclusão e data de atualização. Estas propriedades estarão presentes em cada entidade e desta forma são candidatas a serem um tipo Complexto ou Complex Type.

Um Complex Type permite que você defina um conjunto de propriedades e em seguida as associe com múltiplas entidades.

Abra a janela Model Browser e selecione o item Complex types; Em seguida clique com o botão direito sobre este item e selecione Create Complex Type;

A seguir altere o nome para camposAuditoria;

Em seguida clique com o botão direito do mouse sobre camposAuditoria e selecione Add -> Scalar Property-> DateTime;

Após isso altere o nome para dataInclusao. Repita o processo e inclua a propriedade dataAtualizacao conforme a figura abaixo:

Agora já podemos incluir o Complex Type na nossa entidade Cliente;

Clique com o botão direito do mouse sobre a entidade Cliente e selecione Add -> Complex Property;

A seguir altere o nome da propriedade para camposAuditoria. Observe na janela de propriedades que o tipo esta definido para camposAuditoria, o nosso tipo complexo;

Dessa forma quando o banco de dados for criado a partir desta entidade ele conterá os dois campos definidos no tipo complexo (Complex type).

Vamos agora incluir a entidade Endereco no nosso modelo.

Criando a entidade Endereco e definindo o relacionamento entre as entidades

Vamos agora incluir a entidade Endereco lembrando que um cliente pode ter mais de um endereço e desta forma teremos um relacionamento do tipo um-para-muitos entre essas duas entidades. (Na verdade o termo relacionamento esta mais ligado a tabelas o mais correto seria dizer associação)

Clique com o botão direito do mouse sobre o descritor e selecione Add->Entity e defina o nome da entidade como Endereco e Entity Set como Enderecos aceitando a chave primária conforme a figura abaixo:

Vamos incluir nessa entidade as seguintes propriedades esclares (usando os mesmos procedimentos já descritos acima);

Ao final teremos as entidades representadas no descritor conforme a figura abaixo:

Agora vamos incluir o tipo complexo camposAuditoria na entidade Endereco da mesma forma que fizemos para a entidade Cliente;

Clique com o botão direito sobre a entidade Endereco e selecione Add->Complex Property definindo em seguida o nome para camposAuditoria;

Falta agora definir o relacionamento entre as entidades;

Clique com o botão direito na entidade Cliente e selecione Add -> Association;

A janela Add Association surge e já assume que você deseja criar um relacionamento um-para-muitos entre as entidades mas você pode alterar as definições de Multiplicidade. As propriedades de Navegação permitem navegar entre as tabelas.

Abaixo temos o resultado para o nosso modelo:

Com isso encerramos a criação do modelo de entidades onde definimos as entidades Cliente e Endereco e a associação entre elas.

Vamos agora criar o banco de dados...

Criando o banco de dados a partir do modelo
Agora que temos as entidades definidas podemos criar o banco de dados.

O Entity Framework irá gerar o script com as instruções DDL para criação das tabelas, índices e relacionamentos que poderá ser executado para gerar as tabelas no banco de dados.

O banco de dados deverá ser criado previamente e estar pronto para ser definido no assistente de conexão.

Antes de partir para a geração do banco de dados temos que definir mais um detalhes no modelo de entidades.

Temos que informar ao Entity Framework para definir o campo Id como sendo um campo do tipo Identidade. (Identity).

Para isso clique no campo Id da entidade Cliente e na janela de propriedades altere a propriedade StoreGeneratedPattern com o valor Identity:

repita a operação acima para o campo Id da entidade Endereco.

Agora sim, podemos gerar o banco de dados; Para isso clique com o botão direito sobre a área vazia do descritor e selecione : Generate DataBase from Model;

No assistente para Banco de dados você deverá a conexão do banco de dados contra o qual os scripts serão gerados;

O assistente irá gerar o script DDL necessário para criar o banco de dados;

Clique no botão FInish;

O arquivo Agenda.edmx.sql será gerado e incorporado ao projeto conforme abaixo:

Vamos executar o script no SQL Server Management Studio.(SSMS)

Obs: Podemos executar o script SQL diretamente a partir do ambiente do Visual Studio. Para isso selecione o arquivo Agenda.edmx.sql e a seguir clique com o botão direito do mouse sobre o nome do área do script e selecione a opção Execute SQL:

Com isso será solicitada o Logon no SQL Server Manegement Studio 2008:

Vamos então abrir o SSMS e clicar no botão New Query;

A seguir copie o script para a janela lembrando e clique no botão Execute;

Ao final as tabelas serão geradas no banco de dados Agenda conforme a figura a seguir:

Se verificarmos a estrutura das tabelas geradas iremos ver o seguinte:

Observe que foi incluído a chave estrangeira Cliente_Id na tabela Enderecos

Podemos aproveitar e abrir as tabelas incluindo alguns informações que iremos usar na segunda parte deste artigo.

E isso é tudo que você precisa saber para criar um banco de dados usando a nova metodologia First-Model do Entity Framework 4.

Com isso não há mais desculpas para você não começar modelando primeiro as suas entidades.

Na continuação deste artigo eu vou mostrar como exibir os registros em um controle GridView e também como incluir, atualizar e excluir registros usando o Entity Framwork 4.

Aguarde a continuação deste artigo em: ASP .NET - Usando os recursos do Entity Framework 4 : First-Model e CRUD - 2

Eu sei é apenas Entity Framework 4, mas eu gosto...

Referências:

José Carlos Macoratti