Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
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
- Open Visual Studio 2012
- No menu Ficheiro , aponte para Novo e depois clique em Projeto
- No painel esquerdo, clique em Visual C# e depois selecione o modelo Consola
- Introduza EnumEFDesigner como nome do projeto e clique em OK
Crie um Novo Modelo usando o EF Designer
- Clique com o botão direito no nome do projeto no Explorador de Soluções, aponte para Adicionar e depois clique em Novo Item
- Selecione Dados no menu esquerdo e depois selecione ADO.NET Modelo de Dados de Entidade no painel de Modelos
- Introduza EnumTestModel.edmx para o nome do ficheiro e depois clique em Adicionar
- Na página do Assistente do Modelo de Dados de Entidade, selecione Modelo Vazio na caixa de diálogo Escolher Conteúdo do Modelo
- 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
- 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
- Especifique Departamento para o nome do tipo e especifique DepartmentID para o nome da propriedade chave, mantendo o tipo como Int32
- Clique OK
- Clique com o botão direito na entidade e selecione Adicionar Novo -> Propriedade Escalar
- Renomear a nova propriedade para Nome
- 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
- Adiciona outra propriedade escalar e renomeia-a para Orçamento, muda o tipo para Decimal
Adicionar um Tipo de Enum
No Entity Framework Designer, clique com o botão direito na propriedade Nome, selecione Converter para enum
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
Prima OK
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.
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.
- 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
- 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
- Aparecerá um diálogo a perguntar se queres criar uma nova base de dados, clica em Sim.
- 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
- Clicar Terminar Clicar em Terminar não executa o script DDL.
- 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
- 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
- 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.