Curso Entity Framework - Code First com Suporte a Enum -  XXVII


  Nesta aula vou mostrar como podemos usar enumerações com o Entity Framework. (aula anterior)

Uma das novidades da Entity Framework é o suporte a Enum no Code First.

Neste aula veremos como usar este recurso usando a Linguagem VB .NET em uma aplicação Console, mas os conceitos se aplicam também á linguagem C#.

Os recursos usados são :

Visual Studio 2013 Express for desktop e SQL Server Express 2012 (LocalDB)

Criando o projeto

Abra o Visual Studio 2013 Express for Desktop e clique em New Project;

Selecione a linguagem Visual Basic (ou C#) -> Windows -> Console Application e informe o nome EF5_Enum e clique em OK;

Vamos agora habilitar o Entity Framework para nosso projeto Console.

No menu TOOLS clique em Library Package Manager e a seguir em Manage Nuget Packages for Solution...

Selecione EntityFramework e clique no botão Install;

Confirme a instalação.

O DbContext e tipos DbSet são definidos no assembly do EntityFramework, é por isso adicionamos a referência a esta DLL usando o pacote NuGet para EntityFramework.

Note que além doa assembly EntityFramework, as referências a System.ComponentModel.DataAnnotations e montagens System.Data.Entity são automaticamente adicionados no projeto também.

Definindo o Domínio

Vamos definir um Modelo de domínio bem simples apenas para mostrar o recurso Enum.

No menu PROJECT clique em Add Class;

A seguir informe o nome Alunos.vb e digite o código abaixo onde definimos uma Enumeração Cursos e a classe Alunos:

Public Enum Cursos
   Engenharia
   Matemática
   Quimica
End Enum

Public Class Alunos
   Public Property Id As Integer
   Public Property Nome As String
   Public Property Curso As Cursos
End Class

Definimos uma Enum com o nome Cursos. Por padrão uma enumeração é do tipo integer/int. A propriedade Curso na classe Alunos é do tipo da enumeração Cursos.

No Entity Framework uma enumeração pode ter os seguintes tipos: Byte, Int16, Int32, Int64 or SByte.

Vamos criar uma outra classe chamada AlunoContexto que será o nosso contexto. O código desta classe é visto a seguir:

Imports System.Data.Entity

Public Class AlunoContexto
                
Inherits
DbContext

          Public Property Aluno() As DbSet(Of Alunos)

End Class

Vamos agora definir o código no módulo Module1 para

Imports System.Data.Entity


Module
Module1

   Sub Main()


       Dim
contexto As New AlunoContexto()


      contexto.Aluno.Add(
New Alunos() With { _

                                  .Nome = "Macoratti", _

                                  .Curso = Cursos.Engenharia

                                 })

 

       contexto.SaveChanges()

 

      Dim consulta = (From d In contexto.Aluno Where d.Curso = Cursos.Engenharia).FirstOrDefault()
 

      Console.WriteLine("AlunoId: {0} Nome: {1}", consulta.Id, consulta.Nome)

      Console.ReadKey()

 

  End Sub

End Module

Vemos a utilização do recurso Enum para criar um novo Aluno e para realizar uma consulta selecionando os alunos de um curso.

Abaixo vemos o recurso Intellisense exibindo os dados da enumeração Cursos:

Executando o projeto iremos obter o seguinte resultado:

Ao executar aplicação pela primeira vez, o Entity Framework criará um banco de dados para você. Como estamos usando o Visual Studio 2013 Express for desktop , o banco de dados será criado na instância LocalDB.

Por padrão, o Entity Framework nomeia o banco de dados após o nome completo do contexto derivado que para o nosso exemplo é EF5_Enum.AlunoContexto.

Abrindo a janela DataBase Explorer podemos ver o banco de dados e a tabela Alunos criados:

Pegue o projeto completo aqui: EF_Enum.zip

Na próxima aula vamos tratar do suporte aos tipo de dados Spatial: DbGeography e DbGeometry no Entity Framework.

Rom 3:10 como está escrito: Não há justo, nem sequer um.

Rom 3:11 Não há quem entenda; não há quem busque a Deus.

Rom 3:12 Todos se extraviaram; juntamente se fizeram inúteis. Não há quem faça o bem, não há nem um só.
 

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 ?

 

Referências:


José Carlos Macoratti