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 III

Camada de negócios com Entity Framework 4 e Mysql.

[fechar]

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

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

No artigo Usando MySql com ADO.NET Entity Framework 4 - Parte II foi mostrada a camada de acesso a dados (DAL) usando o Entity Framework.

Então criou-se as classes abstratas, interface e classes concretas. A partir da criação da camada de dados, temos que criar a lógica de negócio inerente ao domínio da aplicação, e neste artigo serão mostrado apenas os métodos que devem compor a camada de negócios para assim desenvolvermos a camada de apresentação.

A camada Business (BLL)

Na camada Business, ou seja, no projeto Entity.BLL é necessário adicionar a referência do projeto Entity.DAL, para que a camada Business consiga visualizar as classes criadas na camada de dados (Entity.DAL). Também deve-se referenciar a System.Data.Entity. Para fazer isso, clique com o botão direito sobre o projeto Entity.BLL e selecione Add Reference, e, a seguir, na guia Projects selecione o projeto Entity.DAL e pressione ok.

A camada de negócio é a responsável pela implementação da lógica da aplicação, expondo esta lógica para a camada de apresentação. Definição dos métodos no projeto Entity.BLL

Dentro do projeto Entity.BLL, crie as classes que serão responsáveis pelas regras de negócio do nosso projeto. As classes são : BSecao, BCategoria e BProduto. Clique com o botão direito sobre o Entity.BLL e selecione Add > New Item. A seguir selecione o template Class e informe o nome BSecao.cs e clique em Add. Faça isso para as outras duas classes.

Como o nossa aplicação é somente para fins didáticos e muito simples, não será inclusa nenhuma regra de negócio, ou seja não será criado nenhum método para as classes BSecao, BCategoria e BProduto, mas para conseguir acessar o métodos da classe abstrata CRUD é necessário aplicar herança nessas classes utilizando as classes concretas ProdutoData, SecaoData e CategoriaData, já que estas herdam a classe abstrata CRUD.

NOTA: Uma classe abstrata não pode ser instanciada. Por este motivo são necessárias as classes concretas.

Aplicando herança para as classes BSecao, BCategoria e BProduto, como mostra o código na Listagem 1 à 3.

Listagem 1: Classe BSecao

using Entity.DAL;
 
namespace Entity.BLL
{
public class BSecao : SecaoData
 	{
}
}

Listagem 2: Classe BCategoria

using Entity.DAL;

namespace Entity.BLL
{
    public class BCategoria : CategoriaData
    {
 
    }
}

Listagem 3: Classe BProduto

using Entity.DAL;
 
namespace Entity.BLL
{
    public class BProduto : ProdutoData
    {
 
    }
}

Conclusão

Neste artigo, apresentou-se a construção da camada de negócios para fins didáticos a partir da existência da camada de dados. Usou-se a ferramenta de desenvolvimento Visual Studio 2010 e a linguagem C#.

Abraços.

Leia também


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?

    21 COMENTÁRIOS

[Fechar]

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



Círculo Militar De São Paulo
Show de bola hein, rsrsrsrsr, parabéns e muito sucesso.

Paulo Freire
[há +1 ano] - Responder

 

[autor] Flavia Moreira
Olá!
Obrigada pelo comentário!
[há +1 ano] - Responder
 

Guilherme Gomes Do Braz
Prezada Flávia, quero lhe dar parabéns pela excelente série de artigos, lhe dizer que espero ansioso pelos próximos.
Mais uma vez PARABÉNS!!
[há +1 ano] - Responder

 

[autor] Flavia Moreira
Obrigada pelo comentário!
[há +1 ano] - Responder
 

Novaes .novaes
Gostei muito. Você teria algo para MS SQL Server?
[há +1 ano] - Responder

 

[autor] Flavia Moreira
Infelizmente não tenho nada sobre Sql Server!
[há +1 ano] - Responder
 

Fabrício M. Damasceno
Flávia.
Gostei muito da matéria e acho que falta material em MySQL na Web.
A Devmedia tem muito materia em .Net com SQL Server.
Gostaria de ver algo simples sobre o uso de login com o mysql.
No site tem artigos e video aulas antiga e ao seguir o passo-a-passo da erro no Web.Config
Acho que seria uma boa materia.
Fica a Dica.
Abraços.
Fica com Deus.
[há +1 ano] - Responder
 

Josiel Da Silva
Olá Flávia, poderia me enviar os métodos da camada de apresentação? Estou fazendo um artigo pra Facul. baseado
no seu e ficaria muito grato se fizesse esse favor. Seria só esses métodos pra finalizar seu exemplo?
[há +1 ano] - Responder

 

Michel Rodrigues
Flavia, gostei muito do seu artigo, mas eu não sei como acessar e trabalhar com stored procedure, você poderia me passar um exemplo do uso de ADO.NET Entity Framework 4 com stored procedure Mysql, Obrigado.
[há +1 mês] - Responder

 

Joel Rodrigues
olá, Michel. Dê uma olhada nesse link: http://nelsonborges.wordpress.com/2009/12/05/entity-framework-%E2%80%93-usando-stored-procedures/
o autor ensina a trabalhar com stored procedures com o EF.
Como complemento, sugiro ainda a leitura deste artigo, onde é ensinado a trabalhar com Stored Procedures no MySQL: http://nelsonborges.wordpress.com/2009/12/05/entity-framework-%E2%80%93-usando-stored-procedures/.

Abraço.
[há +1 mês] - Responder
 

Michel Rodrigues
Obrigado pela resposta, mas, eu ja havia visto, porem não consigo encaixar o que eu realmente preciso; eu trabalho com Linq To Sql com o sql server, somente com stored procedure, estou em uma nova empresa que não trabalha com sql server e sim com o MySql, a maior dificuldade está em passar parametros e obter um retorno, eu com linq to sql fazia dessa forma essa procedure abaixo e de insert update e delete:

public static int Operacao(int? OPERACAO,int? CODIGO,int? COD_BANCO,string Numero1,string Numero2,string UltNumero)
{
ECEntidadesDataContext dataClass = new ECEntidadesDataContext();
var retorno = dataClass.SP_TALOES_CHEQUE(OPERACAO, CODIGO, COD_BANCO, Numero1, Numero2, UltNumero);
return retorno;
}

o meu retorno nesse caso é o numero do registro que na procedure eu retorno em todas as operacoes assim: Return Codigo; no Mysql estou retornando assim: select codigo;
mas eu não sei como trabalhar assim usando MySQL com EF.
eu não vou trabalhar no EF com Tabelas e sim so com procedures, veja abaixo outro exemplo com uma procedure de consulta:

public static List<SP_PESQ_TALOES_CHEQUEResult> PesquisaTaloes(int? COD_BANCO, int? CODIGO)
{

ECEntidadesDataContext dataClass = new ECEntidadesDataContext();
var uso = dataClass.SP_PESQ_TALOES_CHEQUE(COD_BANCO, CODIGO);
List<SP_PESQ_TALOES_CHEQUEResult> iMenu = uso.ToList();
return iMenu;

}

se alguem puder me socorrer, desde de já meu muito obrigado.
[há +1 mês] - Responder
 

Michel Rodrigues
abaixo segue um exemplo de uma stored procedure;

CREATE DEFINER = 'root'@'localhost' PROCEDURE `SP_CADBANCO`(
IN V_operacao INTEGER(11),
IN V_codigo INTEGER(11),
IN V_cod_banco INTEGER(11),
IN V_numero1 Varchar(10),
IN V_numero2 Varchar(10),
IN V_ultnumero Varchar(10),
)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN


IF (V_operacao = 1) THEN

SET V_codigo = (SELECT MAX(codigo) FROM `tb_sesmt_vinc`);

IF (V_codigo IS NULL) THEN

SET V_codigo = 1;
ELSE
SET V_codigo = V_codigo + 1;


END IF;


INSERT INTO `tb_banco` (codigo,cod_banco,numero1,numero2,ultnumero)
VALUES (V_codigo,V_cod_banco,V_numero1,V_numero2,V_ultnumero);

ELSEIF (V_operacao = 3) THEN


DELETE FROM `tb_banco` WHERE codigo = V_codigo;


END IF;

SELECT V_codigo;

END;
[há +1 mês] - Responder
 

Pedro Bajotto Filho
Michel

Você já pensou em usar o Entity Framework ?
Acho que facilita seu trabalho.

[há +1 mês] - Responder
 

Michel Rodrigues
Então é o que quero, mas, as minhas duvidas, é em relação a Entity Framework com Stored Procedure MySql, eu passei 2 Stored Procedure em MySql, mas não sei como acessa-las usando o EF.
[há +1 mês] - Responder
 

Pedro Bajotto Filho
Michel

você está usando que versão do VS ?
Quanto ao mapeamento feito para o SQL Server, você entende como ele funciona ?
[há +1 mês] - Responder
 

Michel Rodrigues
Estou usando VS2010, o que ta acorrendo e que quando eu add uma function import usando complex, ao clicar no botão Get Column Information - na coluna EDM Type aparece em todos os campos: Not Supported e a coluna Db Type vazia.Ai não consigo ter acesso aos campos de retorno da procedure. Quanto ao Sql Server eu trabalhei com SP mas com o Linq to SQL, mas eu tava dando uma pesquisada e vi que não há segredo para se trabalhar com SP no EF, mas, com MYSQL ocorre o que eu relatei a cima,a versão do MySql é a 5.5, vou deixar abaixo a mesma procedure, se puder analizar para ver se eu cometi algum erro, eu to começando a usar o MySql, pode ser que eu esteja comendo bola. Obrigado pela ajuda.

CREATE DEFINER = 'root'@'localhost' PROCEDURE `SP_TESTE_PESQ`(IN var_nome varCHAR(50))
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
select tb_colaboradores.NOME,tb_colaboradores.FUNCAO,
tb_epi.NOME_EPI,tb_epi.VALIDADE,tb_epi.CA,
tb_cad_retirada_epis_itens.data,tb_cad_retirada_epis_itens.qtde,
tb_cad_retirada_epis.cadastro

FROM tb_colaboradores, tb_epi,tb_cad_retirada_epis, tb_cad_retirada_epis_itens
WHERE
tb_colaboradores.ID = tb_cad_retirada_epis.cod_funcionario and
tb_cad_retirada_epis_itens.cod_cad_retirada_epis = tb_cad_retirada_epis.codigo and
tb_epi.ID_EPI = tb_cad_retirada_epis_itens.cod_epis
and (var_nome = '' OR nome_epi like var_nome);

END;
[há +1 mês] - Responder
 

Pedro Bajotto Filho
Michel

Veja se ajuda:
http://stackoverflow.com/questions/8224147/entity-framework-and-mysql-stored-procedures
http://stackoverflow.com/questions/7739120/vs-2010-entity-framework-with-mysql-stored-procedure-doesnt-seem-to-work

E principalmente:
http://stackoverflow.com/questions/5287460/mysql-entity-framework-4-0-stored-procedure-field-mapping

Boa sorte
[há +1 mês] - Responder
 

Jefferson
Flavia , bom dia, seria possível disponibilizar o projeto para download ?
Muito Obrigado.
[há +1 mês] - Responder

 

Wesley Yamazack
Olá Jefferson, enviamos sua solicitação ao autor.

Um abraço
[há +1 mês] - Responder
 

Jefferson
Muito Obrigado.
[há +1 mês] - Responder
 

[autor] Flavia Moreira
Infelizmente eu não tenho mais o projeto!
Att,
Flávia
[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