DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Usando MySql com ADO.NET Entity Framework 4 - Parte I

Este é o primeiro artigo de cinco partes, explicando os como utilizar Mysql com o ADO.NET Entity Framework 4 no Visual Studio 2010 em C#. Usando modelo de três camadas com orientação a objetos.O Primeiro artigo trata-se da criação do banco de d

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

O Entity Framework (EF4) faz parte da família de tecnologias do ADO.NET que oferece o mapeamento objeto relacional (OR/M) a um nível conceitual de abstração. O EF4 possui novas funcionalidades e melhorias, as quais foram sugeridas por muitos desenvolvedores desde a versão 1.0. Desta forma, possibilitou "aproximar" de algumas  características oferecidas em outras ferramentas de mapeamento objeto relacional, como   NHibernate.   As ferramentas de mapeamento objeto-relacional são usadas para eliminar grande parte do código tedioso  necessário para recuperar e persistir  dados de um banco de dados. 
 Através de uma interface visual, o desenvolvedor usa-a para criar classes que são mapeadas para tabelas, relacionamentos, stored procedures e outros objetos em um banco de dados.
Uma das grandes novidades do EF4 é a capacidade de criar um ADO.NET Entity Data Model e então construir a base de dados a partir do modelo. Anteriormente, o desenvolvedor precisava criar o banco de dados e depois gerar o modelo.
Sendo assim, o objetivo deste artigo é mostrar como fazer o mapeamento e CRUD com Entity Framework 4 partindo de um banco de dados em MYSQL, já que a maioria dos artigos mostram como fazer o mapeamento com o banco de dados SQL Server.  E construir uma simples aplicação utilizando-se das três camadas e a linguagem C#.

Requerimentos

 
·         Visual Studio 2010
·         MySQL Community Server
·         MySQL Workbench 5.2.29  

 

Iniciaremos nosso exemplo criando uma database com o nome de BDEntity, como mostra a Figura 1.0.
 
Figura 1.0 - Diagrama de banco de dados
 

Projeto

Para o nosso projeto será utilizado  o modelo de 3 camadas, como descrito abaixo:
·         BLL - (Business Logic Layer) responsável pela lógica do negócio;
·         DAL - (Data Access Layer) responsável pelo acesso e persistência dos dados - interface e classes de acesso a dados usando o Entity Framework;
·         UI - (User Interface) responsável pela interface com o usuário - Aplicação WEB.  
 
Dica: Veja aqui uma definição de modelo em camadas
 
No Visual Studio 2010 selecione File | New | Project. No dropdown selecione o .NET Framework 4, em Installed Templates | Web escolha Empty ASP.NET Web Application. Preencha o campo Name com AppEntity e mantenha a opção “Create directory for solution” selecionada e clique em OK.  Conforme traz a Figura 2.0.
Figura 2.0 - Iniciando projeto
Na Solution Explorer, a camada UI já está adicionada ao projeto, já que escolhemos o template Asp.net web application. Então, adicione dois novos projetos do tipo Class Library dentro da solução. Para fazer isso, com o botão direito sobre a Solution Explorer e depois em Add | New Project, será apresentada um tela  como mostra a Figura 3.0. Então selecione o template Windows | Class Library. 
No campo Name, preencha com os nomes de Entity.Bll e Entity.Dal respectivamente.   
Figura 3.0 - Adicionando projetos para a camada de negócios e dados.
 
A solução deverá possuir três projetos como mostra a Figura 4.0.

Figura 4.0 - Solução com três projetos

A camada de acesso a dados (DAL)

No projeto Entity.DAL  será utilizado o Entity Data Model com base em nosso modelo de dados. Clique com o botão direito sobre o projeto Entity.DAL e selecione Add |New Item. A seguir selecione o template Data | ADO .NET Entity Data Model , informe o nome model.edmx e clique no botão Add. A Figura 5.0 traz a demonstração.
 
Figura 5.0 - Adicionando Modelo Entity Data Model
 
A seguir, é mostrado um assistente que permite escolher dentre duas opções, tais como Generate from database e Empty Model.  A primeira opção permite criar o mapeamento a partir do banco de dados,  e a segunda permite criar um modelo de dados e então criar o script necessário para construir a base de dados.   A Figura 6.0 mostra as duas opções.
 
Figura 6.0 - Opções para modelo de dados
 
Então, selecione a opção Generate from database e em seguida pressione Next. Após, selecione a conexão com o banco de dados, como mostra a Figura 7.0, e clique em Next.
Figura 7.0 - Conexão com banco de dados
Nota: Para configurar a conexão com o banco de dados clique em New Connection  
 
Em seguida selecione as tabelas   e aceite o nome do Namespace como testModel, como traz a Figura 8.0  e clique em Finish.
Figura 8.0 - Adicionando tabelas para o modelo
Por fim, como mostra a Figura 9.0, as entidades foram criadas e o mapeamento ORM gerado automaticamente pela ferramenta.
Figura 9.0 - Entidades e mapeamento
Na Figura 9.0 é possível observar as entidades, tbsecao,tbcategoria e tbproduto criadas, bem como o mapeamento em Mapping Details . O arquivo Model.edmx possui um arquivo associado  que foi gerado automaticamente pelo Entity.
Abra o arquivo associado ModelDesigner.cs e veja o comentário adicionado, como mostra a Figura 10. Esta mensagem indica que o arquivo foi gerado automaticamente pelo template  e modificações manuais podem causar comportamento inesperado, bem como a perda de informações caso o modelo seja gerado novamente pelo Entity Data Model. 
 
Figura 10 - Comentário de aviso
A partir disso,  é necessário definir  alguns métodos para cada entidade. Para isso, será criada uma Interface. E a seguir, uma classe abstrata que implementa esta interface. E consequentemente,  devemos criar as classe concretas das entidades tbsecao, tbcategoria e tbproduto que herdam a classe abstrata.
 
 
Conclusão
 
Neste artigo, apresentou a construção do mapeamento objeto relacional usando-se o EF4 a partir da existência de um banco de dados criado em Mysql. Usou-se a ferramenta de desenvolvimento Visual Studio 2010 e a linguagem C#. No próximo artigo será criado os métodos na camada DAL. Até lá!
 
Abraços,
Flávia Moreira
 
 
 

Flavia Moreira
Flávia Moreira graduada em engenharia da computação. Trabalho como desenvolvedora de sistemas. Publico videos no Msdn: http://msdn.microsoft.com/pt-br/silverlight/ Site http://www.dowhile.com.br
O que você achou deste post?

    7 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Osvaldo Junior
Eu estava lendo o seu artigo sobre "Usando MySql com ADO.NET Entity Framework 4 - Parte I" e achei muito interessante porém, estou com um grande problema.
No meu PC eu tenho instalado o MySQL Workbench 5.2 que contempla as ultimas versões do MySql Server juntamente com o connector para o .Net, o ODBC Provider etc.
E como ferramenta de desenvolvimento e estudos eu tenho o Visual Web Developer 2010 Express. O que ocorre é que no momento de adicionar o ADO.Net Entity Data Model e escolher as opções Generate from DataBase -> New Connection, a lista de Data source não apresenta o MySql Database (.Net Framework Data Provider For Mysql). Isso seria pelo fato das versões express não aceitarem esse tipo de conexão com o MySql ou eu esqueci de instalar/configurar algo. Pesquisei na Web e encontrei algumas pessoas com o mesmo problema. Poderia me dar uma luz, por favor?

Desde já agradeço pela compreensão.
[há +1 ano] - Responder

 

Luiz Agnelo C. Maia
Faz o download do conector:

http://dev.mysql.com/downloads/connector/net/1.0.html

E depois instala:

http://www.macoratti.net/vbn_msql.htm

[]s
[há +1 ano] - Responder
 

Ricardomagreza
Consegui montar todo o projeto usando o MySQLconnector e na minha máquina funciona perfeitamente.

Montei minha a aplicação em duas camadas, uma Web, que não acessa o entities, e outra de negócio, onde estão as regras e o entities, nessa última eu adicionei a dll ao projeto e referenciei a dll do connector.

No projeto web a única referencia que possui ao conector é na connectionString e ele tem referência do camada de negócio.

O problema é que quando subo a aplicação para o site ela dá esse Erro:

Unable to find the requested .Net Framework Data Provider. It may not be installed.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Não sei o que fazer para usar isso dentro do FTP onde está meu site, você tem alguma idéia? Já tentei diversas maneiras mas não tive sucesso em nenhuma.
[há +1 ano] - Responder

 

Ricardomagreza
Consegui montar todo o projeto usando o MySQLconnector e na minha máquina funciona perfeitamente.

Montei minha a aplicação em duas camadas, uma Web, que não acessa o entities, e outra de negócio, onde estão as regras e o entities, nessa última eu adicionei a dll ao projeto e referenciei a dll do connector.

No projeto web a única referencia que possui ao conector é na connectionString e ele tem referência do camada de negócio.

O problema é que quando subo a aplicação para o site ela dá esse Erro:

Unable to find the requested .Net Framework Data Provider. It may not be installed.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Não sei o que fazer para usar isso dentro do FTP onde está meu site, você tem alguma idéia? Já tentei diversas maneiras mas não tive sucesso em nenhuma.
[há +1 ano] - Responder

 

[autor] Flavia Moreira
Faça o upload da DLL e coloque dentro do BIN e não esqueça de referenciar o data provider no arquivo de web.config:
[há +1 ano] - Responder
 

Carlos Costa Junior
Flavia, estou tendo problemas na criação do meu Entity data model. Já tenho tudo instalado, porém, no momento de criar a conexão com o banco não me apresenta nenhum conector para o mysql. É necessário fazer mais algum tipo de configuração??
[há +1 mês] - Responder
 

Pedro Bajotto Filho
Carlos

Você baixou os drivers do MySql para o .NET ?
http://dev.mysql.com/downloads/connector/net/

[há +1 mês] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03