Podpora výčtu – EF Designer
Poznámka
Pouze EF5 – funkce, rozhraní API atd. probírané na této stránce byly představeny v Entity Frameworku 5. Pokud používáte starší verzi, některé nebo všechny informace nemusí být platné.
V tomto videu a podrobném návodu se dozvíte, jak používat typy výčtů v Návrháři entity Framework. Ukazuje také, jak používat výčty v dotazu LINQ.
Tento názorný postup použije model First k vytvoření nové databáze, ale nástroj EF Designer se dá použít také s pracovním postupem Database First k mapování na existující databázi.
Podpora výčtu byla zavedena v Entity Frameworku 5. Pokud chcete používat nové funkce, jako jsou výčty, prostorové datové typy a funkce s hodnotami tabulky, musíte cílit na rozhraní .NET Framework 4.5. Visual Studio 2012 ve výchozím nastavení cílí na .NET 4.5.
V Entity Framework může mít výčet následující základní typy: Byte, Int16, Int32, Int64 nebo SByte.
Přehrát video
Toto video ukazuje, jak používat typy výčtů v Návrháři entity Framework. Ukazuje také, jak používat výčty v dotazu LINQ.
Autor: Julia Kornich
Předpoklady
K dokončení tohoto návodu budete muset mít nainstalovanou edici Visual Studio 2012, Ultimate, Premium, Professional nebo Web Express.
Nastavení projektu
- Otevření sady Visual Studio 2012
- V nabídce Soubor přejděte na příkaz Nový a klepněte na příkaz Projekt
- V levém podokně klikněte na Visual C# a pak vyberte šablonu konzoly .
- Jako název projektu zadejte EnumEFDesigner a klikněte na OK.
Vytvoření nového modelu pomocí návrháře EF
- Klikněte pravým tlačítkem myši na název projektu v Průzkumník řešení, přejděte na příkaz Přidat a potom klikněte na položku Nová položka.
- V nabídce vlevo vyberte Data a pak v podokně Šablony vyberte ADO.NET Model dat entity.
- Jako název souboru zadejte EnumTestModel.edmx a klepněte na tlačítko Přidat.
- Na stránce Průvodce datovým modelem entity vyberte v dialogovém okně Zvolit obsah modelu prázdný model .
- Klikněte na Dokončit.
Zobrazí se Návrhář entit, který poskytuje návrhovou plochu pro úpravy modelu.
Průvodce provede následující akce:
- Vygeneruje soubor EnumTestModel.edmx, který definuje koncepční model, model úložiště a mapování mezi nimi. Nastaví vlastnost Zpracování artefaktů metadat souboru .edmx na vložit do výstupního sestavení, aby generované soubory metadat byly vloženy do sestavení.
- Přidá odkaz na následující sestavení: EntityFramework, System.ComponentModel.DataAnnotations a System.Data.Data.Entity.
- Vytvoří EnumTestModel.tt a EnumTestModel.Context.tt soubory a přidá je do souboru .edmx. Tyto soubory šablon T4 generují kód, který definuje odvozený typ DbContext a typy POCO, které se mapují na entity v modelu .edmx.
Přidání nového typu entity
- Klikněte pravým tlačítkem myši na prázdnou oblast návrhové plochy, vyberte Přidat –> Entita, zobrazí se dialogové okno Nová entita.
- Zadejte název typu Oddělení a jako název vlastnosti klíče zadejte ID oddělení a typ nechejte jako Int32.
- Klikněte na tlačítko OK.
- Klikněte pravým tlačítkem myši na entitu a vyberte Přidat novou –> skalární vlastnost.
- Přejmenování nové vlastnosti na Name
- Změňte typ nové vlastnosti na Int32 (ve výchozím nastavení je nová vlastnost typu String) Chcete-li změnit typ, otevřete okno Vlastnosti a změňte vlastnost Typ na Int32.
- Přidejte další skalární vlastnost a přejmenujte ji na Budget, změňte typ na Decimal.
Přidání typu výčtu
V Návrháři Entity Framework klikněte pravým tlačítkem myši na vlastnost Název, vyberte Převést na výčet.
V dialogovém okně Přidat výčet zadejte DepartmentNames pro název typu výčtu, změňte typ podkladového typu na Int32 a pak přidejte následující členy do typu: angličtina, matematika a ekonomika
Stiskněte OK.
Uložení modelu a sestavení projektu
Poznámka
Při sestavování se můžou v seznamu chyb zobrazovat upozornění na nemapované entity a přidružení. Tato upozornění můžete ignorovat, protože jakmile se rozhodneme vygenerovat databázi z modelu, chyby zmizí.
Pokud se podíváte na okno Vlastnosti, všimnete si, že typ vlastnosti Name byl změněn na DepartmentNames a nově přidaný typ výčtu byl přidán do seznamu typů.
Pokud přepnete do okna Prohlížeč modelů, uvidíte, že typ byl také přidán do uzlu Typy výčtu.
Poznámka
Nové typy výčtů můžete přidat také z tohoto okna kliknutím na pravé tlačítko myši a výběrem možnosti Přidat typ výčtu. Jakmile se typ vytvoří, zobrazí se v seznamu typů a budete moct přidružit k vlastnosti.
Generování databáze z modelu
Teď můžeme vygenerovat databázi založenou na modelu.
- Klikněte pravým tlačítkem myši na prázdné místo na ploše Návrháře entit a vyberte Vygenerovat databázi z modelu.
- Dialogové okno Zvolit data Připojení ion Průvodce generováním databáze se zobrazí kliknutím na tlačítko Nový Připojení ion Zadat (localdb)\mssqllocaldb pro název serveru a EnumTest databáze a klepněte na tlačítko OK.
- Otevře se dialogové okno s dotazem, jestli chcete vytvořit novou databázi, klikněte na ano.
- Click Next and the Create Database Wizard generates data definition language (DDL) for create a database The generated DDL is displayed in the Summary and Nastavení Dialog Box Note, that the DDL not contain a definition for a table that maps to the enumeration type
- Po kliknutí na tlačítko Dokončit se nespustí skript DDL.
- Průvodce vytvořením databáze provede následující: Otevře EnumTest.edmx.sql v editoru T-SQL vygeneruje schéma a mapování oddílů úložiště souboru EDMX přidá připojovací řetězec informace do souboru App.config.
- Klikněte na pravé tlačítko myši v editoru T-SQL a vyberte spustit dialogové okno Připojení na server, zadejte informace o připojení z kroku 2 a klikněte na Připojení
- Pokud chcete zobrazit vygenerované schéma, klikněte pravým tlačítkem na název databáze v SQL Serveru Průzkumník objektů a vyberte Aktualizovat.
Uchování a načtení dat
Otevřete soubor Program.cs, kde je definována metoda Main. Do funkce Main přidejte následující kód. Kód přidá do kontextu nový objekt Oddělení. Potom uloží data. Kód také spustí dotaz LINQ, který vrátí oddělení, kde je název 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);
}
Zkompilujte a spusťte aplikaci. Program vytvoří následující výstup:
DepartmentID: 1 Name: English
Pokud chcete zobrazit data v databázi, klikněte pravým tlačítkem myši na název databáze v SQL Serveru Průzkumník objektů a vyberte Aktualizovat. Potom klikněte na pravé tlačítko myši v tabulce a vyberte Zobrazit data.
Souhrn
V tomto názorném postupu jsme se podívali, jak mapovat typy výčtů pomocí Návrháře entity Framework a jak používat výčty v kódu.