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#) |
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 :
Spatial Data - Dados geográficos agora podem ser expostos em seu modelo usando o DbGeography e os tipos DbGeometry. Com isso podemos ter um campo do tipo DbGeography e através do namespace System.Data.Spatial manipular dados geográficos informando as coordenadas latitude e longitude;
Migrations - Este o recurso permite realizar alterações em nosso modelo de entidades e ter a atualização automática do banco de dados refletindo essas mudanças sem perder os dados;
Table Value Functions (TVF) - Este recurso permite mapear TVFs tanto para entidades como para tipos complexos no EF5; (TVFs são funções definidas pelo usuário (UDF), que vivem na base de dados alvo e cujo tipo de retorno é uma tabela.)
Enums - Permite que você tenha propriedades de enumeração - enum - em suas classes de entidade; assim o Code First já as reconhece e as implementa no database.
O Code First agora detecta se você tem o LocalDB ou o SQL Express disponível para criar novas bases de dados. O Visual Studio 2012 inclui o LocalDB, enquanto Visual Studio 2010 inclui o SQL Express.
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#