Nesta terceira parte do tutorial vou criar uma Interface e uma classe que servirão de apoio para a manipulação dos dados com o Entity Framework 4, a Interface eu vou chamar de IDAO.cs , e ela será implementada pela classe ContatoDAO.cs, que vai conter os métodos CRUD da aplicação.
O objetivo dessa série de tutoriais é apresentar uma forma simples de trabalhar com o Entity Framework 4 em um projeto em camadas com WPF, utilizando o padrão MVVM, existem diversas maneiras de criar uma aplicação WPF, neste tutorial simplifiquei alguns passos para que fique mais fácil para quem está começando com a tecnologia.
Na camada de dados da aplicação, adicione uma interface chamada IDAO, para isso, clique com o botão direito do mouse no projeto Contatos.Data e em Add – New Item, em Installed Templates, selecione Visual C# Items, clique em Interface, dê o nome de IDAO.cs e adicione ao projeto.
Esta interface servirá de contrato para que a classe ContatoDAO.cs implemente todos os métodos CRUD .
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace Contatos.Data{ public interface IDAO< T > { T Add(T pEntity); void Delete(T pEntity); void Update(T pEntity); IQueryable GetAll();
}}
Neste exemplo o método Add será responsável pela inclusão de um registro na base de dados, o método retornará a entidade adicionada na base, já setado com o Id do registro, os métodos Update e Delete, recebem o objeto, com o objetivo de atualizar e deletar respectivamente e o método GetAll retornará todos os registros na tabela Contato.
Vou adicionar agora a classe ContatoDAO.cs, para isso, clique com o botão direito do mouse no projeto Contatos.Data e em Add – New Item, em Installed Templates, selecione Visual C# Items, clique em Class, dê o nome de ContatoDAO.cs e adicione ao projeto.
A Primeira modificação que vou fazer no projeto é implementar a interface IDAO e passar a entidade Contato como T:
Em seguida vou criar uma instância do modelo do EntityFramework, o arquivo ModelContato.Context.cs contém o nome na string ContainerName, neste exemplo o nome da classe é ModelContatoContainer:
ModelContatoContainer model = new ModelContatoContainer();
Agora basta implementar as quatro operações CRUD conforme abaixo:
# region CRUD
public T Add(T pEntity) { model.ContatoSet.AddObject(pEntity); model.SaveChanges(); return pEntity; }
public void Delete(T pEntity) { model.ContatoSet.Attach(pEntity); model.DeleteObject(pEntity); model.SaveChanges(); }
public void Update(T pEntity) { model.ContatoSet.Attach(pEntity); model.ObjectStateManager.ChangeObjectState(pEntity, System.Data.EntityState.Modified); model.SaveChanges(); }
public IQueryable GetAll() { return model.CreateObjectSet(); }
# endregion
Uma visão geral da classe pode ser vista na figura abaixo:
Neste momento nosso projeto está com a seguinte estrutura:
continua…








