Entity Framework - Conceitos Básicos - Manutenção de uma tabela
Neste artigo eu procuro dar uma visão geral sobre a utilização do Entity Framework para realização de tarefas básicas de manutenção de dados com alguns padrões usados em banco de dados. Para isso eu irei montar alguns cenários mostrando como usar o EF para realizar a tarefa de exibição e manutenção dos dados quando for o caso. Abaixo segue um resumo dos cenários que serão abordados:
Em todos os cenários irei usar uma aplicação Windows forms criada no Visual Studio 2008 SP1 e o banco de dados SQL Server 2008 Express.
Vou iniciar definindo o modelo básico usado na aplicação exemplo. Eu vou usar um banco de dados bem parecido com o Northwind.mdf mas com uma estrutura mais enxuta para facilitar o trabalho. Ele foi criado usando o SQL Server Management Studio 2008. Segue a baixo a estrutura do banco de dados que eu chamei Macoratti.mdf:
Nota: Veja o artigo : Usando o SQL Server Management Studio
Pegue o script para gerar o modelo acima aqui: MacorattiSQL.zip
Abra então o Visual Studio 2008 SP1 e crie um novo projeto do tipo Windows Forms chamado EF_Crud3;
A seguir vamos gerar um Entity Data Mode (EDM)l a partir do modelo exibido na figura acima;
No menu Project -> New Item , selecione em Templates o item ADO .NET Entity Data Model e informe o nome Macoratti.edmx e clique em Add;
Dessa forma teremos o nosso modelo conceitual gerado conforme a figura a seguir:
Este será o nosso ponto de partida para as considerações e para os cenários que iremos desenhar para mostrar como usar o EF em algumas situações de manutenção de dados.
Cenário 1 - Manutenção de uma única tabela
Neste cenário vou mostrar como realizar as operações básicas manutenção de um única tabela: a tabela Categorias.
Como eu já mostrei como realizar as operações básicas - CRUD - em uma tabela efetuando os métodos apropriados do EF, neste exemplo vou usar o recurso de manutenção dos dados através do controle DataGridView - gdvCategorias:
Então no formulário form1.vb inclua um controle DataGridView e um Button conforme o leiaute abaixo:
A seguir vejamos o código que vamos usar para realizar a manutenção dos dados da tabela Categorias:
Declare a variável categoriaContexto conforme a seguir :
Protected categoriaContexto As MacorattiEntitiesNo evento Load do formulário fazemos uma consulta para selecionar os registros e exibir no Grid:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try categoriaContexto = New MacorattiEntities Dim consulta = From c In categoriaContexto.Categorias _ Select c gdvCategorias.DataSource = consulta.ToList() 'define a largura das colunas gdvCategorias.Columns("nome").Width = 90 gdvCategorias.Columns("descricao").Width = 150 gdvCategorias.Columns("imagemurl").Width = 150 'oculta a exibição das colunas indicadas gdvCategorias.Columns("categoriaid").Visible = False gdvCategorias.Columns("Produtos").Visible = False Catch ex As Exception MsgBox("Erro : " & ex.Message) End Try End Sub
|
Poderíamos ter usado o ObjectQuery para realizar a consulta conforme o código abaixo:
Dim categoria As ObjectQuery(Of Categoria) = categoriaContexto.Categorias
gdvCategorias.DataSource = categoria
mas para isso teríamos que declarar o namespace:
Imports
System.Data.Objects
O
ObjectQuery representa uma consulta tipada contra um
Entity Data
Model (EDM) em um dado object context.(No nosso caso
MacorattiEntities) A classe genérica ObjectQuery<(Of <(T>)>) representa uma consulta que retorna uma coleção de zero ou mais objetos de um tipo específico. O ObjectContext precisa ser definido antes de um ObjectQuery ser executado. Este contexto fornece a conexão e a informação sobre os metadados que é necessária para compor e executar a consulta. Um ObjectQuery é executado nos seguintes cenários:
|
O restante do código seria igual e o resultado seria o mesmo.
No evento Click do botão de comando inclua o código abaixo :
Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click Try categoriaContexto.SaveChanges() MsgBox("Alteração salva com sucesso.") Catch ex As Exception MsgBox("Erro : " & ex.Message) End Try End Sub |
E pronto, com isso já podemos incluir, alterar e excluir dados usando o DataGridView e persistir as informações no banco de dados usando o Entity Framework.
Pode não ser aderente as melhores práticas (como não é) mas funciona perfeitamente. (Exemplo ideal para apresentações...)
Pegue o projeto completo aqui: EF_Crud3.zip
Eu sei é apenas Entity Framework , mas eu gosto.
Referências:
Entity Framework - Conceitos Básicos - Espiando o modelo conceitual
Entity Framework - Conceitos Básicos - Usando Lazy Load e Eager Load
Entity Framework - Conceitos Básicos - Incluindo, modificando e excluindo objetos
Entity Framework - Conceitos Básicos - Incluindo, modificando e excluindo objetos II
Entity Framework - Conceitos Básicos - Definindo um EDM usando a herança Table Per Type (TPT)