Curso Entity Framework - Usando Stored Procedures - XXV


  Nesta aula vou mostrar como podemos usar stored procedures com o Entity Framework. (aula anterior)

 

Chegou o Curso ASP .NET MVC 5 Vídeo Aulas (C#)

Clique e Confira
 

O Entity Framework possui a habilidade de automaticamente construir nativamente comandos para o banco de dados baseado em suas consultas LINQ to Entities ou Entity SQL, bem como construir os comandos para incluir, atualizar ou deletar dados. No entanto você pode querer sobrescrever esses passos e usar suas stores procedures pré-definidas.

Para isso você pode usar storeds procedures quer seja para obter dados ou para incluir, atualizar e deletar registros de uma ou múltiplas tabelas.

As stored procedures e as user-defined functions (UDFs) no banco de dados são representadas como funções no Entity Framework.(Atualmente o EF não possui nenhuma entidade para stored procedures no descritor EDM.)

Vamos então incluir no banco de dados EscolaDB.mdf criado na aula 2 do curso.

Abra o banco de dados e clique com o botão direito sobre o item Stored Procedures e a seguir em New Stored Procedure.

A seguir inclua o código abaixo que cria a stored procedure GetCursosPorAlunoId que retorna os cursos pelo código do aluno:

A seguir, como já criamos o EDM nas aulas anteriores, temos que atualizar o nosso modelo de entidades incluindo a stored procedure que acabamos de criar no EDM.

Abra o EDM na solução EF6_EscolaDB e seguir clique com o botão direito do mouse no interior do descritor e a seguir em Update Model from database;

No janela do assistente marque o item Stored Procedures and Functions e clique no botão Finish;

Se visualizarmos o Model Browser iremos visualizar a nossa stored procedure em Entity Types -> Complex Types:

Sempre que importamos uma stored procedure para o modelo , ele criar um novo tipo complexo com o nome : {nome_da_stored_procedure}_Result por padrão:

A stored procedure GetCursosPorAlunoId irá retornar os mesmos campos da entidade Curso.

Precisamos então atualizar o tipo de retorno da stored procedure para retornar um tipo da entidade Curso.

Abra o Model Browser e em Function Imports clique com o botão direito sobre GetCursosPorAlunoId e a seguir em Edit;

Clique no radiobutton Entities e selecione a entidade Curso e clique no botão OK:

Pronto ! já podemos usar a nossa stored procedure.

Preparando o ambiente

Vamos usar a solução criada na aula 11 - Entity Framework - Consultas Projeção - EF6_EscolaDB - para testar o cenário da concorrência descrito acima.

Abra a solução EF6_EscolaDB e a seguir clique no menu FILE -> Add -> New Project;

Selecione a linguagem Visual C# e o template Console Application e informe o nome EF6_StoredProcedure :

Para referenciar o EF no projeto incluído, no menu TOOLS clique em Nuget Package Manager -> Manage Nuget Packages for solution;

A seguir clique em Installed packages e depois no botão Manage e marque o projeto que incluímos e a seguir no botão OK.

A seguir inclua uma referência neste projeto ao projeto EF6_EscolaDB e atualize também o arquivo App.Config com a string de conexão para a entidade :

...
<
connectionStrings>
<
add name="EscolaDBEntities" connectionString="metadata=res://*/EscolaDB.csdl|res://*/EscolaDB.ssdl|res://*/EscolaDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=EscolaDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>
...


Testando a Stored Procedure

A seguir no método Main() do arquivo Program.cs inclua o código abaixo :

using System;
using EF6_EscolaDB;
namespace EF6_StoredProcedure
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new EscolaDBEntities())
            {
                var cursos = context.GetCursosPorAlunoId(2);
                Console.WriteLine("Cursos do Aluno de código igual a 2 - Miriam ");
                Console.WriteLine("------------------------------------------------");
                foreach (Curso cs in cursos)
                    Console.WriteLine(cs.CursoNome);
                Console.ReadKey();
            }
        }
    }
}

Executando o projeto iremos obter o seguinte resultado

Na próxima aula veremos como podemos usar stored procedures para fazer um CUD no Entity Framework.

(Disse Jesus) Assim, pois, qualquer de vós, que não renuncia a tudo quanto tem, não pode ser meu discípulo.
Lucas 14:33

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti