Exportar (0) Imprimir
Expandir Tudo

Fundamentos do Entity Framework 4

Por Carlos dos Santos

Maio, 2012

JJ128158.060DE5057573180CEC6D227C6D3E2207(pt-br,MSDN.10).png

Criando o banco de dados

Imagine que você já tenha um banco de dados e queira começar um projeto com o Entity Framework, e as atualizações que precisamos fazer no banco de dados, como podemos manter nosso modelo atualizado ? Isto é o que vamos começar a ver a partir de agora.

Vamos iniciar criando um banco de dados no SQL Server, mas você pode usar qualquer outro gerenciador de bancos de dados a sua escolha. Nosso banco será o mesmo do artigo anterior, com uma tabela Grupo e Produto. Abaixo está o script para a criação do nosso banco de dados:

SQL Script:

CREATE DATABASE [EF_MVA]

GO

USE [EF_MVA]

GO

CREATE TABLE [dbo].[Grupo](

[Id] [int] IDENTITY(1,1) NOT NULL,

[Nome] [nvarchar](50) NULL,

CONSTRAINT [PK_Grupo] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object: Table [dbo].[Produto] Script Date: 04/14/2012 23:16:14 ******/

GO

CREATE TABLE [dbo].[Produto](

[Id] [int] IDENTITY(1,1) NOT NULL,

[Nome] [nvarchar](100) NULL,

[IdGrupo] [int] NOT NULL,

[Custo] [decimal](17, 2) NULL,

[Venda] [decimal](17, 2) NULL,

[Saldo] [int] NULL,

CONSTRAINT [PK_Produto] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Produto] WITH CHECK ADD CONSTRAINT [FK_Produto_Grupo] FOREIGN KEY([IdGrupo])

REFERENCES [dbo].[Grupo] ([Id])

GO

ALTER TABLE [dbo].[Produto] CHECK CONSTRAINT [FK_Produto_Grupo]

GO


Executando este script de no SQL Server teremos o banco de dados conforme a figura abaixo:

JJ128158.CEE40D4A1F8125C211F9A4DB24294F52(pt-br,MSDN.10).png

Criando o mapeamento do Banco de Dados com o Entity Framework

Agora que já temos o banco de dados criado, vamos iniciar o mapeamento com o Entity Framework criando um projeto do tipo Console no Visual Studio:

JJ128158.87BE95C4FAC780D5FE5FB05C1D48EBDB(pt-br,MSDN.10).png

Após isto iremos adicionar o Entity Framework clicando com o botão direito do mouse no Solution Explorer, em cima do nome da sua solução, e depois em Add/New:

JJ128158.BA4D5DABC51A5327AA93BD282F94A3CA(pt-br,MSDN.10).png

Na janela Add New Item, escolha “ADO.Net Entity Data Model”, que é o template para a criação do Entity Framework e vamos dar o nome de EF_MVA para o nosso arquivo. Agora vamos escolher a opção “Generate from database” e após isto precisaremos criar uma conexão para o nosso banco de dados. Vamos fazer isto clicando no botão “New Connection”:

JJ128158.29E7404BF38D44B79A5669B6BF0D8321(pt-br,MSDN.10).png

O Data Source se refere ao tipo do banco de dados ou provider que iremos utilizar, no nosso caso o SQL Server. Informe também o nome do seu servidor SQL Server e depois disto escolha o banco de dados para o mapeamento, em nosso caso EF_MVA.

Veja agora os dados na janela de conexão:

JJ128158.99C002B1B76716D46E4DAE45177B1A4A(pt-br,MSDN.10).png

Agora temos uma conexão para o banco de dados EF_MVA e também uma string de conexão do Entity Framework, que basicamente informa o tipo do banco de dados e a conexão com o banco, que é a mesma que utilizamos em conexões ADO.Net. O próximo passo, clicando em Next é escolher quais tabelas iremos mapear e é possível que em algum banco de dados não tenhamos necessidade de trabalhar com todas as tabelas, podendo escolher somente algumas. Podemos também mapear Views e Stored Procedures do banco de dados. Veja na figura abaixo o mapeamento das tabelas:

JJ128158.C9E0C44B71FED7BDBBF0B07A4AAA2333(pt-br,MSDN.10).png

A informação de Pluralize se refere a colocar os nomes no plural, por exemplo: Grupos e Produtos, pois o Entity Framework trata as tabelas como coleções de objetos, mas isto é somente uma convenção e você pode utilizar conforme sua necessidade. Vamos agora clicar no Finish e analisar o que foi gerado:

JJ128158.AE37842AF24418E387D7DD04190357F9(pt-br,MSDN.10).png

Veja que as tabelas e os relacionamentos foram gerados com perfeição, você pode clicar no relacionamento, nas entidades e nas propriedades e conferir o mapeamento.

Atualizando o Entity Framework após modificar o banco de dados

Mas e se você precisar modificar o banco de dados, por exemplo, vamos incluir um novo campo chamado “Promocao” no banco de dados e precisamos que o nosso modelo seja atualizado. Isto é bem simples e fazemos clicando com o botão direito na área branca do modelo, onde não existe nenhum objeto, isto irá abrir um menu e iremos clicar em “Update Model From Database”:

JJ128158.1537C320663439EC0A7E41972FD83ADC(pt-br,MSDN.10).png

Este processo irá abrir uma tela semelhante a que vimos quando mapeamos o banco de dados e iremos escolher o que vamos atualizar: Tabelas, Views ou Stored Procedures. Feito isto teremos nosso modelo atualizado novamente:

JJ128158.596778FD73CC0E2038C7FDC45DB6FB40(pt-br,MSDN.10).png

Modificando os nomes dos campos no modelo

Você pode também modificar o nome das propriedades no seu modelo sem que o campo relacionado no banco de dados seja modificado, por exemplo, vamos modificar a propriedade Promocao trocando seu nome para PrecoPromocao no modelo:

JJ128158.B1FBB7243EF3FD5FD19414DA7207B098(pt-br,MSDN.10).png

Você pode usar o campo PrecoPromocao no seu código sem problemas, mas quando o Entity Framework submeter os comandos para o banco de dados o campo utilizado internamente será Promocao.

Entendendo o arquivo EDMx

Agora que o banco de dados está mapeado e configurado, vamos olhar para a nossa solução e ver o que foi gerado:

JJ128158.8C8896282576DC8FB8242D6FC93BCE29(pt-br,MSDN.10).png
O arquivo EDMx que agora faz parte da nossa solução contém o mapeamento entre as entidades (classes) do nosso modelo visual e as tabelas do banco de dados, bem como o tipo do banco de dados que estamos usando neste modelo. Vamos analisar este arquivo clicando com o botão direito do mouse em cima do EF_MVA.edmx e escolhendo Open With e depois XML (Text) Editor, após isto iremos ver o arquivo no formato XML. Este arquivo está dividido em 3 partes:

SSDL – contém as informações do banco de dados, como tipo do banco, nome das tabelas, nomes e tipos dos campos;

CSDL – contém as informações do modelo, ou seja, o que fizemos no designer do Entity Framework, como entidades, propriedades e associações.

C-S Mapping – finalmente esta parte do arquivo faz a relação entre o nosso modelo e o banco de dados.

Sendo assim, é necessário que para cada tipo de banco de dados exista um arquivo EDMx específico, pois as informações são sensíveis ao tipo deste banco de dados. Um outro arquivo que também faz parte da nossa solução é o EF_MVA.Designer.cs, onde estão todas as classes geradas pelo nosso modelo, ou seja, neste arquivo é que está o código fonte de todas as classes, propriedades e associações que fizemos no designer e que também iremos utilizar na codificação das nossas aplicações. Vale lembrar que se você alterar o arquivo Designer.cs não deve ser alterado diretamente, pois ele é controlado pelo designer do Entity Framework e as informações modificadas diretamente nele serão perdidas.

Conclusão

Vimos como criar um banco de dados ou utilizar um existente e mapeá-lo usando o Entity Framework, sendo assim já é possível utilizamos esta excelente ferramenta em nossas aplicações. Você viu também que atualizar o modelo e ajustá-lo a sua necessidade é uma tarefa bastante simples. Continue assistindo aos treinamentos e lendo os artigos, assim você vai aprimorar seus conhecimentos e conseguirá colocar em prática em seu próximo trabalho.

JJ128158.80A5682C42DBDDD76F302471A33DCAF0(pt-br,MSDN.10).png https://www.microsoftvirtualacademy.com/tracks/fundamentos-do-entity-framework-4


Mostrar:
© 2014 Microsoft