Início > Ado.Net > Mapeamento com o Entity FrameWork usando 3 camadas (1° Parte)

Mapeamento com o Entity FrameWork usando 3 camadas (1° Parte)

Olá, este final de semana me aventurei em brincar um pouco com o EF, e comecei a estudar um material que encontrei na internet, segue ai alguns links´s:

WebCast – Entity Framework
http://blogs.msdn.com/luti/archive/2008/10/27/webcast-dessa-semana-entity-framework.aspx

ADO.NET novos Providers
http://blogs.msdn.com/wcamb/archive/2008/06/14/ado-net-entity-framework-novos-providers-est-o-chegando.aspx

EF e ORM em Geral
http://blogs.msdn.com/otavio/archive/2008/08/03/entity-framework-e-orm-s-em-geral.aspx

 

Bom, depois de ver estes e outros materiais, comecei a colocar a mão na massa, e fiz um pequeno projeto usando o EF, neste projeto minhas entidades, business e apresentação assim como o acesso a banco ficaram dentro do projeto, ou seja não efetuei divisão de camadas,  então resolvi sofisticar a coisa e partir para um projeto separado em camadas, como fazer isso usando a facilidade do EF, e tentar ao máximo reaproveitar códigos?!

A primeira coisa que fiz foi modelar meu banco de dados,  criei as tabelas de dados e defini um único tipo para as chaves primarias, não importa se minhas tabelas contenham chaves compostas ou simples, ou que os nomes dos PK sejam diferentes, o que importa é que seja do mesmo tipo, pois assim irá flexibilizar o desenvolvimento de minhas classes no EF de forma genérica.

Bom para estudo irei criar um banco de dados chamado BancoHoras, e neste banco de dados irei  criar duas tabelas, sendo elas Resource e Pagamento, veja abaixo o script das tabelas:

Tabela de Resource:

CREATE TABLE [dbo].[EpmResource](

      [ResourceID] [int] NOT NULL,

      [ResourceName] [nvarchar](255) NOT NULL,

      [ResourceEmailAddress] [nvarchar](255) NULL,

      [ResourceGroup] [nvarchar](255) NULL,

 CONSTRAINT [PK_T_EpmResource] PRIMARY KEY CLUSTERED

(

      [ResourceUID] ASC

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

) ON [PRIMARY]

 

 

 

Tabela de Pagamento:

CREATE TABLE [dbo].[T_PGTOS](

      [DataPgto] [datetime] NOT NULL,

      [PagID] [int] NOT NULL,

      [Horas] [numeric](18, 2) NOT NULL,

 CONSTRAINT [PK_T_PGTOS] PRIMARY KEY CLUSTERED

(

      [PagID] 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

 

Agora vamos criar uma solution chamada BancoHoras e um projeto do tipo Class Library, nomeie este projeto como BancoHoras.Entities, conforme imagem abaixo:

 

Depois de criar o projeto vamos a implementação das interfaces, a primeira coisa que iremos fazer é criar a interface que contenha uma propriedade chamada Identificador, qual o motivo desta interface ? Como mencionado acima, precisamos definir que todas nossas entidades contenham a propriedade ID, pois assim, conseguiremos criar métodos genéricos para todas as operações CRUD. Para melhor organização dos arquivos crie uma Folder chamada Interfaces e dentro desta folder crie a interface conforme o código abaixo:

namespace BancoHoras.Entities.Interfaces

{

    public interface IEntityWithID

    {

        int Identificador { get; }

    }

}

 

 

Agora iremos criar uma classe base para as entidades, essa classe irá herdar do objeto EntityObject e  da interface que acabamos de criar (IEntityWithID).
A classe EntityObject implementa as funcionalidades básicas para as entidades do EF, ou seja as entidades que trabalham com o modelo de ORM devem herdar EntityObject . Veja então como deve ficar nossa classe base.

namespace BancoHoras.Entities

{

    public class EntityBase : EntityObject, IEntityWithID

    {
        public int Identificador { get; set; }

 

    }

}

 

Mais informações sobre o EntityObject ->
http://msdn.microsoft.com/en-us/library/system.data.objects.dataclasses.entityobject.aspx

 

Bom, por hoje irei ficando por aqui, mas até o final desta semana iremos finalizar nosso projeto.

 

Abraço,

Categorias:Ado.Net
  1. João Vitor
    26 de fevereiro de 2010 às 14:25

    Muito bom o artigo.

  2. LEANDRO RAFAEL LOPES
    27 de novembro de 2010 às 9:22

    Muito bom… farei isto com um projeto que estou criando.

    []’s

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: