Partilhar via


Suporte de Enumeração - EF Designer

Observação

Apenas a partir do EF5 - As funcionalidades, APIs, etc. discutidas nesta página foram introduzidas no Entity Framework 5. Se estiver a usar uma versão anterior, parte ou toda a informação não se aplica.

Este vídeo e uma explicação passo a passo mostram como usar tipos enum com o Entity Framework Designer. Também demonstra como usar enums numa consulta LINQ.

Esta guia usará o Model First para criar uma nova base de dados, mas o EF Designer também pode ser usado com o fluxo de trabalho Database First para mapear para uma base de dados existente.

O suporte a Enum foi introduzido no Entity Framework 5. Para usar as novas funcionalidades como enums, tipos de dados espaciais e funções com valores em tabelas, deve direcionar-se para o .NET Framework 4.5. O Visual Studio 2012 tem como alvo o .NET 4.5 por padrão.

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

Veja o vídeo

Este vídeo mostra como usar tipos de enum com o Entity Framework Designer. Também demonstra como usar enums numa consulta LINQ.

Apresentado por: Julia Kornich

Vídeo: WMV | MP4 | WMV (ZIP)

Pre-Requisites

Vai precisar de ter instalado o Visual Studio 2012, Ultimate, Premium, Professional ou Web Express edition para completar esta explicação.

Criar o Projeto

  1. Open Visual Studio 2012
  2. No menu Ficheiro , aponte para Novo e depois clique em Projeto
  3. No painel esquerdo, clique em Visual C# e depois selecione o modelo Consola
  4. Introduza EnumEFDesigner como nome do projeto e clique em OK

Crie um Novo Modelo usando o EF Designer

  1. Clique com o botão direito no nome do projeto no Explorador de Soluções, aponte para Adicionar e depois clique em Novo Item
  2. Selecione Dados no menu esquerdo e depois selecione ADO.NET Modelo de Dados de Entidade no painel de Modelos
  3. Introduza EnumTestModel.edmx para o nome do ficheiro e depois clique em Adicionar
  4. Na página do Assistente do Modelo de Dados de Entidade, selecione Modelo Vazio na caixa de diálogo Escolher Conteúdo do Modelo
  5. Clique em Concluir

O Designer de Entidades, que fornece uma superfície de design para editar o seu modelo, é exibido.

O assistente executa as seguintes ações:

  • Gera o ficheiro EnumTestModel.edmx que define o modelo conceptual, o modelo de armazenamento e o mapeamento entre eles. Define a propriedade de Processamento de Artefactos de Metadados do ficheiro .edmx para Embed no Assembly de Saída, para que os ficheiros de metadados gerados fiquem incorporados no assembly.
  • Adiciona uma referência aos seguintes assemblies: EntityFramework, System.ComponentModel.DataAnnotations e System.Data.Entity.
  • Cria ficheiros EnumTestModel.tt e EnumTestModel.Context.tt e adiciona-os no ficheiro .edmx. Estes ficheiros de modelo T4 geram o código que define o tipo derivado do DbContext e os tipos POCO que correspondem às entidades no modelo .edmx.

Adicionar um Novo Tipo de Entidade

  1. Clique com o botão direito numa área vazia da superfície de design, selecione Adicionar -> Entidade, e a caixa de diálogo Nova Entidade aparece
  2. Especifique Departamento para o nome do tipo e especifique DepartmentID para o nome da propriedade chave, mantendo o tipo como Int32
  3. Clique OK
  4. Clique com o botão direito na entidade e selecione Adicionar Novo -> Propriedade Escalar
  5. Renomear a nova propriedade para Nome
  6. Mude o tipo da nova propriedade para Int32 (por defeito, a nova propriedade é do tipo String) Para alterar o tipo, abra a janela Propriedades e altere a propriedade Tipo para Int32
  7. Adiciona outra propriedade escalar e renomeia-a para Orçamento, muda o tipo para Decimal

Adicionar um Tipo de Enum

  1. No Entity Framework Designer, clique com o botão direito na propriedade Nome, selecione Converter para enum

    Converter em Enum

  2. Na caixa de diálogo Adicionar Enum, insira NomesDeDepartamentos para o Nome do Tipo Enum, altere o Tipo Base para Int32 e depois adicione os seguintes membros ao tipo: Inglês, Matemática e Economia

    Adicionar Tipo de Enum

  3. Prima OK

  4. Guarde o modelo e construa o projeto

    Observação

    Quando constróis, avisos sobre entidades e associações não mapeadas podem aparecer na Lista de Erros. Pode ignorar estes avisos porque, depois de escolhermos gerar a base de dados a partir do modelo, os erros desaparecem.

Se olhar para a janela de Propriedades, notará que o tipo da propriedade Nome foi alterado para NomesDeDepartamentos e o novo tipo de enum adicionado foi adicionado à lista de tipos.

Se mudar para a janela do Navegador de Modelos, verá que o tipo também foi adicionado ao nó Enum Types.

Navegador de Modelos

Observação

Também pode adicionar novos tipos de enum a partir desta janela clicando no botão direito do rato e selecionando Adicionar Tipo de Enum. Depois de criado o tipo, aparecerá na lista de tipos e poderá associar-se a uma propriedade

Gerar Base de Dados a partir do Modelo

Agora podemos gerar uma base de dados baseada no modelo.

  1. Clique com o botão direito num espaço vazio na superfície do Designer de Entidades e selecione Gerar Base de Dados a partir do Modelo
  2. A caixa de diálogo Escolher a Sua Ligação de Dados do Assistente Gerar Base de Dados é exibida. Clique no botão Nova Ligação , especifique (localdb)\mssqllocaldb para o nome do servidor e EnumTest para a base de dados e clique em OK
  3. Aparecerá um diálogo a perguntar se queres criar uma nova base de dados, clica em Sim.
  4. Clique em Seguinte e o Assistente de Criação de Base de Dados gera linguagem de definição de dados (DDL) para criar uma base de dados O DDL gerado é exibido na Caixa de Diálogo de Resumo e Definições Nota, que o DDL não contém uma definição para uma tabela que corresponda ao tipo de enumeração
  5. Clicar Terminar Clicar em Terminar não executa o script DDL.
  6. O Assistente de Criação de Base de Dados faz o seguinte: Abre a EnumTest.edmx.sql no Editor T-SQL Gera o esquema de armazenamento e as secções de mapeamento do ficheiro EDMX Adiciona informação de string de ligação ao ficheiro App.config
  7. Clica no botão direito do rato no Editor T-SQL e seleciona Executar . Aparece o diálogo Ligar ao Servidor, introduz a informação de ligação do passo 2 e clica em Ligar
  8. Para visualizar o esquema gerado, clique com o botão direito no nome da base de dados no SQL Server Object Explorer e selecione Atualizar

Persistir e Recuperar Dados

Abra o ficheiro Program.cs onde o método Main está definido. Adicione o seguinte código à função principal. O código adiciona um novo objeto de Departamento ao contexto. Depois guarda os dados. O código também executa uma consulta LINQ que devolve um Departamento cujo nome é NomesDepartamentos.English.

using (var context = new EnumTestModelContainer())
{
    context.Departments.Add(new Department{ Name = DepartmentNames.English });

    context.SaveChanges();

    var department = (from d in context.Departments
                        where d.Name == DepartmentNames.English
                        select d).FirstOrDefault();

    Console.WriteLine(
        "DepartmentID: {0} and Name: {1}",
        department.DepartmentID,  
        department.Name);
}

Compilar e executar a aplicação. O programa produz a seguinte saída:

DepartmentID: 1 Name: English

Para visualizar dados na base de dados, clique com o botão direito no nome da base de dados no SQL Server Object Explorer e selecione Atualizar. Depois, clique no botão direito do rato na tabela e selecione Ver Dados.

Resumo

Neste walkthrough, analisámos como mapear tipos de enum usando o Entity Framework Designer e como usar enums no código.