terça-feira, 18 de fevereiro de 2014

Utilizando Entity Splitting

Olá amigos!

Vou iniciar agora uma série de postagem sobre o Entity Framework, pois devido a estar estudando para prestar a prova de certificação já aproveito o estudo e vou criando tutoriais para fixar o estudo e compartilhar o conhecimento.


Hoje estarei demonstrando um recurso muito interessante do Entity Framework, o Splitting.

Você já deve ter se deparado com banco de dados onde algumas informações em comum por algum motivo estão em tabelas separadas.

Com o recurso Splitting você pode mapear uma ou mais tabelas em uma entidade, sem a necessidade de utilizar join em seu código deixando um código mais limpo.


Então vamos lá!

Primeiro você vai precisar criar as duas tabelas. Peque Aqui o Script , ou você pode usar um modelo de sua preferência.

Primeiro crie um  Console Application



 Em seguida adicione um Entity Data Model ao seu projeto




Vamos mapear as tabelas Person e PersonInfo. 


Assim que o diagrama de entidades estiver carregado selecione as propriedades Email e Phone , recorte e cole na entidade Person



Agora seu Diagrama estará assim:


Em seguida você pode remover a entidade PersonInfo do diagrama clicando com o botal Del.

Agora precisamos mapear a tabela PersonInfo na entidade Person.

Clique com o botão direito do mouse sobre a entidade Person  e em seguida Table Mapping


Clique em <Add a Table or View>, em seguida vai aparecer a tabela PersonInfo, clique e os campos serão carregados no mapeamento.



Veja como esta o mapeamento da entidade Person:

Em seguida vamos para o nosso arquivo Program.cs e fazer a inclusão do registro.



É isso ae pessoal, de uma forma bem rápida podemos resolver esse problema que muitos programadores ficariam loucos em escrever códigos para incluir nas duas tabelas.

Espero que tenham gostado, e qualquer dúvida ou sugestão deixe seu comentário.


Obrigado e até a próxima!

quarta-feira, 16 de outubro de 2013

Padrões de Projetos : Abstract Factory

Olá amigos, hoje vamos aprender mais um padrão de projeto, o ABSTRACT FACTORY


Para demonstrar esse padrão primeiro preciso apresentar "o problema":


Primeiro vamos criar um projeto Console Application


Vamos criar uma classe abstrata chamada DBConnection

Em seguida criar um método abstrato Open();



Em seguida vamos criar uma classe SQLConnection implementando a classe abstrata DBConnection.
Em seguida sobrescrevemos o método Open() como na imagem abaixo.



Agora vamos criar uma outra classe abstrata chamada DBCommand.

E incluir um método abstrato Execute().




Agora criamos uma classe SQLCommand implementando a classe abstrata DBCommand
Em seguida sobrescrevemos o método Execute como na imagem abaixo.




Agora vamos utilizar as nossas classes SQLConnection e SQLCommand em nosso programa.


O resultado final é :



Bom perceba que temos um grande problema aqui, estamos totalmente acoplados nas classes SQLConnection e SQLCommand, caso precisemos trocar o nosso banco de dados para ORACLE, termos que trocar todos os nossos objetos de nosso projeto e suas utilizações.

Para resolver isso vamos utilizar o padrão Abstract Factory, onde teremos uma "fábrica" que vai criar os objetos e devolver somente a instancia de acordo com a fábrica utilizada.

Vamos implementar o padrão.


Primeiro criamos uma classe abstrata DBFactory
Nela adicionamos dois métodos, o createConnection e o CreateCommand,

Perceba que o método abstrato createConnection retorna um DBConnection, ou seja, poderá retornar qualquer objeto que implemente essa classe
E a mesma situação para o método createCommand.




Agora criamos a nossa fabrica para a família de objetos SQL.

Nela implementamos a classe abstrata DBFactory.
E em seguida sobrescrevemos os métodos createConnection e createCommand.

O método createConnection retorna uma instancia da classe SQLConnection, e o método createCommand retorna uma instancia da classe SQLCommand.


Nosso diagrama de classe ficou da seguinte maneira.



Agora vamos alterar o nosso programa principal para utilizar a fabrica.

Perceba que agora não criamos a Instancia da classe SQLCommand ou SQLConnection, quem faz isso é a Factory.

E o resultado final.



Criei as mesmas classes para o ORACLE para ilustrar a facilidade que teremos para modificar a conexão com o banco de dados.

Perceba na imagem abaixo que a única coisa que mudou em nosso código foi a instancia da classe OracleFactory().

Com isso deixamos o sistema escalável  e de fácil manutenção, sem falar no baixo nível de acoplamento, pois o programa cliente não sabre o que é o SQL ou ORACLE , apenas utiliza.

Galera por hoje é isso, peque aqui o projeto completo.

Espero que tenham gostado e até a próxima.



-- Lucas 6:37 - 38


segunda-feira, 30 de setembro de 2013

ASP.NET MVC WEB API - PARTE 1

Olá amigos, hoje vou dar inicio a uma série de posts sobre essa tecnologia que acredito que veio para substituir o WEBSERVICE.

Vamos colocar a mão na massa!

Inicie um novo projeto Asp.net MVC


Em seguida selecione o template Web API


Agora temos uma estrutura de pastas padrão do ASP.NET MVC



Vamos modificar o Web.Config e adicionar a conexão para o banco de dados.

 <add name="MeuContexto" providerName="System.Data.SqlClient" connectionString="Data Source=(Local); Initial Catalog=Api;User Id=usuario; Password=senha;"/>
    

Agora vamos criar uma classe na pasta Models chama MeuContexto.cs


Essa classe precisa herdar de DbContext, e para que isso seja possivel precisamos referenciar o namespace System.Data.Entity 






E nossa classe Clientes deve ficar da seguinte forma:

Note que referenciamos o namespace System.ComponentModel.DataAnnotations para que possamos indicar o campo responsável pela chave primária de nossa tabela.

Agora vamos adicionar um Controller para de Clientes onde conterá os métodos responsáveis por Inserir, alterar ,excluir e listar nossos clientes.



Selecione o template API controller with read/write actions, using Entity Framework , com isso nosso controller já vai ser criado com os métodos CRUD padrão.

Selecione também nossa classe Clientes em Model class e Data Context class



Quando clicarmos em Add o VS 2012 vai criar toda a estrutura automaticamente.


Em seguida vamos executar nossa aplicação.



Veja que maravilha!!!!

Como o Asp.net Web API Utiliza JSON qualquer aplicação pode consumir as informações.

Pegue aqui o projeto da primeira parte.



Deuteronônio 7:9




quarta-feira, 18 de setembro de 2013

Padrões de Projetos: Delegação


Olá pessoal hoje vou estar demonstrando o padrão de projeto "DELEGAÇÃO"


O padrão delegação permite a um objeto "herdar" funcionalidades de outros objetos sem que os objetos externos saibam disso.


Vamos tomar como estudo de caso uma construtora.


Abra o Visual Studio 2012 e crie um novo projeto Console Application:


Em Seguida adicione um novo arquivo class 

No novo arquivo vamos criar uma classe Pedreiro e uma classe Pintor.

A classe Pedreiro tem um método chamado Construir, e a Classe Pintor um método Pintar





Agora criaremos uma terceira classe chamada Gerente.
Como em algumas empresas o Gerente fica responsável apenas por repassar o serviço, sem executar nenhum trabalho, ou seja ele apenas delega funções para seus funcionários.



Perceba que na classe Gerente temos dois objetos privados, o _pedreiro e o _pintor.

Eles são desconhecidos para o "cliente", e caso seja necessário adicionar ou remover objetos o "cliente" não ficara sabendo.

Agora vamos adicionar um método para o Gerente chamado IniciarConstrucao().



Perceba que quando o Gerente incia a construção ele não faz nada, simplesmente delega as funções para o pedreiro e para o pintor.


Agora no program.cs vamos criar o objeto Gerente e iniciar uma construção para ver o resultado.





Agora vamos compilar e ver o resultado.



Finalizando, delegação é quando um cliente faz uma solicitação para uma classe que repassa a tarefa para um ou mais objetos internos formados por composição.

Em breve vou tentar montar algum material falando sobre Composição e Agregação, pois também ainda tenho algumas dúvidas



Download do  Projeto Delegação

E eu não dou valor a minha própria vida. O importante é que eu complete a minha missão e termine o trabalho que o Senhor Jesus me deu para fazer. E a missão é esta, anunciar a boa noticia da graça de Deus.
Atos 20:24 -

quarta-feira, 30 de março de 2011

Persistencia de dados com Entity Framework e MySQL


Essa é a primeira video aula do nosso site, onde estaremos mostrando a instalação do MySql Connector .Net e a persistencia e visualização de dados com o Entity Framework e banco de dados MySql





sexta-feira, 24 de setembro de 2010

Posters

Segue abaixo um link para baixar o poster do Dot.net FrameWork 4.0 para pendurar em sua empresa. Esta em alta resolução.

E-Books para Download

Também vamos começar a disponibilizar alguns e-books para download,

O primeiro será o USE A CABEÇA C#, um livro muito didático e de facial entendimento, muito bom.