Compartilhar via


Suporte à enumeração – Designer EF

Observação

Apenas a partir do EF5 – os recursos, as APIs etc. discutidos nesta página foram introduzidos no Entity Framework 5. Se você estiver usando uma versão anterior, algumas ou todas as informações não se aplicarão.

Este vídeo e passo a passo mostram como usar tipos de enumeração com o Entity Framework Designer. Ele também demonstra como usar enumes em uma consulta LINQ.

Este passo a passo usará o Model First para criar um novo banco de dados, mas o Designer de EF também pode ser usado com o fluxo de trabalho Database First para mapear para um banco de dados existente.

O suporte a enums foi adicionado ao Entity Framework 5. Para usar os novos recursos, como enumerações, tipos de dados espaciais e funções com valor de tabela, você deve ter como alvo o .NET Framework 4.5. O Visual Studio 2012 tem como destino 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.

Assista ao vídeo

Este vídeo mostra como usar tipos de enumeração com o Designer da Estrutura de Entidade. Ele também demonstra como usar enumes em uma consulta LINQ.

Apresentado por: Julia Kornich

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

Pré-Requisitos

Você precisará ter o Visual Studio 2012, Ultimate, Premium, Professional ou Web Express Edition instalado para concluir este passo a passo.

Configurar o Projeto

  1. Abra o Visual Studio 2012
  2. No menu Arquivo , aponte para Novo e clique em Projeto
  3. No painel esquerdo, clique em Visual C#e selecione o modelo de Console
  4. Insira EnumEFDesigner como o nome do projeto e clique em OK

Criar um novo modelo usando o Designer EF

  1. Clique com o botão direito do mouse no nome do projeto no Gerenciador de Soluções, aponte para Adicionar e clique em Novo Item
  2. Selecione Dados no menu à esquerda e selecione ADO.NET Modelo de Dados de Entidade no painel Modelos
  3. Insira EnumTestModel.edmx para o nome do arquivo e clique em Adicionar
  4. Na página Assistente de 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 Entidade, que fornece uma superfície de design para editar seu modelo, é exibido.

O assistente executa as seguintes ações:

  • Gera o arquivo EnumTestModel.edmx que define o modelo conceitual, o modelo de armazenamento e o mapeamento entre eles. Defina a propriedade de Processamento de Artefatos de Metadados do arquivo .edmx para Embutir no Assembly de Saída, garantindo que os arquivos de metadados gerados sejam incorporados ao assembly.
  • Adiciona uma referência aos seguintes assemblies: EntityFramework, System.ComponentModel.DataAnnotations e System.Data.Entity.
  • Cria arquivos EnumTestModel.tt e EnumTestModel.Context.tt e os adiciona no arquivo .edmx. Esses arquivos de modelo T4 geram o código que define o tipo derivado de DbContext e os tipos POCO que são mapeados para as entidades no modelo .edmx.

Adicionar um novo tipo de entidade

  1. Clique com o botão direito do mouse em uma área vazia da superfície de design, selecione Adicionar –> Entidade, a caixa de diálogo Nova Entidade será exibida
  2. Especifique Department para o nome do tipo e especifique DepartmentID para o nome da propriedade chave, deixe o tipo como Int32
  3. Clique em OK
  4. Clique com o botão direito do mouse na entidade e selecione Adicionar Novo –> Propriedade Escalar
  5. Renomear a nova propriedade para Nome
  6. Altere o tipo da nova propriedade para Int32 (por padrão, a nova propriedade é do tipo String) Para alterar o tipo, abra a janela Propriedades e altere a propriedade Type para Int32
  7. Adicione outra propriedade escalar e renomeie-a para Orçamento, altere o tipo para Decimal

Adicionar um tipo Enum

  1. No Entity Framework Designer, clique com o botão direito do mouse na propriedade Nome, selecione Converter em enumeração

    Converter em Enum

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

    Adicionar Tipo de Enum

  3. Pressione OK

  4. Salvar o modelo e compilar o projeto

    Observação

    Quando você cria, os avisos sobre entidades e associações não mapeadas podem aparecer na Lista de Erros. Você pode ignorar esses avisos porque depois que optarmos por gerar o banco de dados do modelo, os erros desaparecerão.

Se você examinar a janela Propriedades, observará que o tipo da propriedade Name foi alterado para DepartmentNames e o tipo de enumeração recém-adicionado foi adicionado à lista de tipos.

Se você alternar para a janela do Navegador do Modelo, verá que o tipo também foi adicionado ao nó Tipos de Enum.

Navegador de Modelos

Observação

Você também pode adicionar novos tipos de enumeração nesta janela clicando no botão direito do mouse e selecionando Adicionar Tipo de Enum. Depois que o tipo for criado, ele aparecerá na lista de tipos e você poderá associar a uma propriedade

Gerar banco de dados a partir do modelo

Agora podemos gerar um banco de dados baseado no modelo.

  1. Clique com o botão direito do mouse em um espaço vazio na superfície do Designer de Entidade e selecione Gerar Banco de Dados do Modelo
  2. A caixa de diálogo Escolher Sua Conexão de Dados do Assistente para Gerar Banco de Dados é exibida Clique no botão Nova Conexão Especificar (localdb)\mssqllocaldb para o nome do servidor e EnumTest para o banco de dados e clique em OK
  3. Uma caixa de diálogo perguntando se você deseja criar um novo banco de dados será exibida, clique em Sim.
  4. Clique em Avançar e o Assistente para Criar Banco de Dados gera linguagem de definição de dados (DDL) para criar um banco de dados A DDL gerada é exibida na caixa de diálogo Resumo e Configurações Observação de que a DDL não contém uma definição para uma tabela mapeada para o tipo de enumeração
  5. Clique em Concluir Clicando em Concluir não executa o script DDL.
  6. O Assistente para Criar Banco de Dados faz o seguinte: abre o EnumTest.edmx.sql no Editor T-SQL Gera o esquema do repositório e as seções de mapeamento do arquivo EDMX adiciona informações de cadeia de conexão ao arquivo App.config
  7. Clique no botão direito do mouse no Editor do T-SQL e selecione Executar a caixa de diálogo Conectar ao Servidor exibida, insira as informações de conexão da etapa 2 e clique em Conectar
  8. Para exibir o esquema gerado, clique com o botão direito do mouse no nome do banco de dados no Pesquisador de Objetos do SQL Server e selecione Atualizar

Persistir e recuperar dados

Abra o arquivo Program.cs em que o método Main está definido. Adicione o código a seguir à função Principal. O código adiciona um novo objeto Department ao contexto. Em seguida, ele salva os dados. O código também executa uma consulta LINQ que retorna um Departamento em que o nome é DepartmentNames.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);
}

Compile e execute o aplicativo. O programa produz a seguinte saída:

DepartmentID: 1 Name: English

Para exibir dados no banco de dados, clique com o botão direito do mouse no nome do banco de dados no Pesquisador de Objetos do SQL Server e selecione Atualizar. Em seguida, clique no botão direito do mouse na tabela e selecione Exibir Dados.

Resumo

Neste passo a passo, analisamos como mapear tipos de enumeração usando o Entity Framework Designer e como usar enumerações no código.