none
Entity Framework vs Procedures RRS feed

  • Discussão Geral

  • Olá pessoal, 

    Quero trocar um sistema que está fazendo todo acesso ao banco de dados via Stored Procedures pra Entity Framework. Já fiz alguns testes e deu certo, mas fiquei com algumas dúvidas:

    1 - Mapeei as classes na mão, por não saber utilizar muito bem o .edmx. Ou seja, mapeei as classes, criei uma classe Contexto e pronto, consigo ter acesso ao banco de dados. Porém, vi que existe um jeito de chamar stored procedures com Entity Framework(e eu queria utilizar pra quando a procedure for mais complexa). O único jeito de chamar as procedures é utilizando o entity framework com esse .edmx? (Sou leigo nessa parte)

    2 - Uma das procedures está assim: 

    SELECT idObra,SUM(tamanho)/1024 tamanho FROM arquivos
    	WHERE idObra in (SELECT id FROM obras WHERE idPlano = 15)
    	GROUP BY idObra


    Como posso fazer pra fazer esse mesmo procedimento sem ter que ir ao banco de dados duas vezes? O jeito que estou fazendo hoje é assim:

    List<long> idsobra = new List<long>();
                List<Obra> obras = db.Obras.Where(o => o.idPlano == idPlano).ToList();
    
                foreach (var item in obras)
                {
                    idsobra.Add(item.id);
                }
    
                return (List<Arquivo>)db.Arquivos.Where(a => idsobra.Contains(a.id)).ToList().GroupBy(a => a.idObra);

    terça-feira, 29 de julho de 2014 17:09

Todas as Respostas

  • Abaixo tem 2 ótimos artigos que lhe ensinaram como fazer isso:

    http://msdn.microsoft.com/en-us/data/gg699321.aspx

    http://www.macoratti.net/12/02/ef4_usp1.htm

    Bons Estudos !


    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 29 de julho de 2014 18:18
  • Valeu cara muito util esse do Macoratti. Só fiquei pensando aqui qual é a vantagem de mapear as classes como eu fiz.. Na mão.. 

    E gostaria de saber como eu faria pra atualizar a aplicação quando eu atualizasse uma tabela do banco por exemplo.

    Muito obrigado novamente!

    terça-feira, 29 de julho de 2014 21:18
  • Amigo se cadastre no MVA e faça este curso:

    http://www.microsoftvirtualacademy.com/training-courses/fundamentos-do-entity-framework-4

    ele vai retirar as suas duvidas.

    terça-feira, 29 de julho de 2014 22:19
  • Você cria seu .edmx, ai você gera o .edmx com o modelo do seu Banco de Dados.

    Ai ele fará esse trabalho sozinho por você.

    Para atualizar basta Clicar 2 vezes no .edmx, ele vai abrir uma página, basta você clicar com o botão direito em qualquer lugar da página e selecionar a opção UPDATE MODEL FROM DATABASE.


    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 30 de julho de 2014 15:04
  • Ahh legal, vou fazer esse curso de EF assim que puder. Brigadão galera, achei muito legal criar desse jeito porém, acabei encontrando um grande problema. Ao criar desse jeito ele cria os nomes das classes que são ou iguais a tabela ou tenta pluralizar ou singularizar. Porém, tenho uma tabela por exemplo Albuns e queria que o nome da minha classe seja Album e ele cria como albun. Até aí tudo bem... Fui lá e renomeei a classe. Porém ao atualizar o modelo, novamente voltou tudo. Aliás achei estranho ter vindo com o nome das classes com a inicial minuscula.

    Existe alguma maneira de resolver esse problema?

    quinta-feira, 31 de julho de 2014 14:01