Curso Entity Framework - Suporte a Table Valued Functions - XXIX


  Na aula de hoje vou apresentar o suporte ao recurso Table Valued Function do SQL Server, disponível no Entity Framework a partir da versão 5.0. (aula anterior)

 

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

As Table-Valued Functions(TVF) são similares às stored procedures com uma diferença chave: o resultado de uma TVF é combinável, o que significa que ele pode ser usando em uma consulta LINQ.

As TVFs foram introduzidas no SQL Server 2005 e retornam um conjunto de resultados na forma de uma variável tabela. Elas podem ser uma boa alternativa às Views pois as Views não permitem parâmetros e as Table Valued permitem.

A tabela retornada pela TVF pode ser usada na cláusula FROM, e o corpo de uma Table Valued é apenas uma consulta em linha que usa uma instrução SELECT e retorna um resultset.

Apenas para lembrar, a partir da versão 5 do Entity Framework, tivemos as seguintes novidades :

Usando Table-Valued Functions com Entity Framework

Na aula 25 nós criamos uma Table-Valued Function chamada - GetCursosPorAlunoId - no arquivo Escola.mdf criado na aula 2 do curso, que retorna todos os cursos de um aluno específico pelo seu ID.

Nessa mesma aula nós também já incluímos essa TVF em nosso modelo de entidades (EDM).

Vamos prosseguir abrindo o Model Browser e expandindo o item Function Imports;

A seguir clique com o botão direito do mouse sobre a função GetCursosPorAlunoId e no menu suspenso clique na opção Edit;

a

Você pode notar que o EDM criou automaticamente o tipo complexo GetCursoPorAlunoId_Result como um tipo de coleção de retorno;

Podemos agora selecionar uma entidade existente como um tipo de retorno se a TVF retornar as mesmas colunas como uma entidade (Curso):

Clique no botão OK para efetivar a operação.

Agora podemos usar essa TVF em nosso DBContext.

Abra o projeto da aula 25 : EF6_StoredProcedure, usando o Visual Studio 2013 Express For Windows Desktop;

A seguir inclua no arquivo Program.cs uma método chamado Testando_TVF() com o código abaixo:

  public void Testando_TVF()
  {
            using (var ctx = new EscolaDBEntities())
            {
                //Executa TVF e  filtra o resultado pela localização do curso
                var listaCursos = ctx.GetCursosPorAlunoId(1).Where(c => c.CursoLocalizacao == 1)
                                .ToList<GetCursosPorAlunoId_Result>();
                
                foreach (GetCursosPorAlunoId_Result cs in listaCursos)
                    Console.WriteLine("Nome do Curso: {0},  Localização: {1}", cs.CursoNome, cs.CursoLocalizacao);
                Console.ReadKey();
            }
  }

Depois, no método Main(), basta fazer a chamada deste método  para obter o seguinte resultado:

Vimos assim a utilização de uma Table Valued Function no Entity Framework.

Na próxima aula vamos tratar da propriedade Local do DBSet.

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

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

       

      Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:

 


José Carlos Macoratti