Podpora výčtu – Code First

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ů s Entity Framework Code First. Ukazuje také, jak používat výčty v dotazu LINQ.

Tento názorný postup použije Code First k vytvoření nové databáze, ale můžete také použít Code 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ů s Entity Framework Code First. Ukazuje také, jak používat výčty v dotazu LINQ.

Autor: Julia Kornich

Video: WMV | MP4 | WMV (ZIP)

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

  1. Otevření sady Visual Studio 2012
  2. V nabídce Soubor přejděte na příkaz Nový a klepněte na příkaz Projekt
  3. V levém podokně klikněte na Visual C# a pak vyberte šablonu konzoly .
  4. Jako název projektu zadejte EnumCodeFirst a klikněte na OK.

Definování nového modelu pomocí code First

Při použití vývoje Code First obvykle začínáte psaním tříd rozhraní .NET Framework, které definují váš konceptuální (doménový) model. Následující kód definuje třídu Oddělení.

Kód také definuje výčet DepartmentNames. Ve výchozím nastavení je výčet typu int . Vlastnost Název třídy Department je typu DepartmentNames.

Otevřete soubor Program.cs a vložte následující definice třídy.

public enum DepartmentNames
{
    English,
    Math,
    Economics
}     

public partial class Department
{
    public int DepartmentID { get; set; }
    public DepartmentNames Name { get; set; }
    public decimal Budget { get; set; }
}

 

Definování odvozeného typu DbContext

Kromě definování entit je nutné definovat třídu, která je odvozena z DbContext a zveřejňuje DbSet<TEntity> vlastnosti. Vlastnosti DbSet<TEntity> znají kontext, které typy chcete zahrnout do modelu.

Instance odvozeného typu DbContext spravuje objekty entity během doby běhu, což zahrnuje naplnění objektů dat z databáze, sledování změn a zachování dat do databáze.

Typy DbContext a DbSet jsou definovány v sestavení EntityFramework. K této knihovně DLL přidáme odkaz pomocí balíčku NuGet EntityFramework.

  1. V Průzkumník řešení klikněte pravým tlačítkem myši na název projektu.
  2. Vyberte Spravovat balíčky NuGet...
  3. V dialogovém okně Spravovat balíčky NuGet vyberte kartu Online a zvolte balíček EntityFramework .
  4. Klikněte na Nainstalovat.

Všimněte si, že kromě sestavení EntityFramework jsou také přidány odkazy na System.ComponentModel.DataAnnotations a System.Data.Entity sestavení.

V horní části souboru Program.cs přidejte následující příkaz using:

using System.Data.Entity;

Do souboru Program.cs přidejte definici kontextu. 

public partial class EnumTestContext : DbContext
{
    public DbSet<Department> Departments { get; set; }
}

 

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 EnumTestContext())
{
    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} Name: {1}",
        department.DepartmentID,  
        department.Name);
}

Zkompilujte a spusťte aplikaci. Program vytvoří následující výstup:

DepartmentID: 1 Name: English

 

Zobrazení vygenerované databáze

Při prvním spuštění aplikace vytvoří Entity Framework databázi za vás. Vzhledem k tomu, že máme nainstalovanou sadu Visual Studio 2012, vytvoří se databáze v instanci LocalDB. Ve výchozím nastavení entity Framework pojmenuje databázi za plně kvalifikovaný název odvozeného kontextu (v tomto příkladu je EnumCodeFirst.EnumTestContext). Další časy, kdy bude použita existující databáze.  

Všimněte si, že pokud po vytvoření databáze provedete nějaké změny modelu, měli byste k aktualizaci schématu databáze použít Migrace Code First. Příklad použití migrací najdete v části Code First do nové databáze .

Pokud chcete zobrazit databázi a data, postupujte takto:

  1. V hlavní nabídce sady Visual Studio 2012 vyberte Zobrazit ->SQL Server Průzkumník objektů.
  2. Pokud místní databáze není v seznamu serverů, klikněte na tlačítko pravé myši na SQL Serveru a vyberte Přidat SQL Server Použít výchozí ověřování systému Windows pro připojení k instanci LocalDB.
  3. Rozbalení uzlu LocalDB
  4. Rozbalte složku Databáze, abyste viděli novou databázi a přejděte do tabulky Oddělení Poznámka: Code First nevytvoří tabulku, která se mapuje na typ výčtu.
  5. Pokud chcete zobrazit data, klikněte pravým tlačítkem myši na tabulku a vyberte Zobrazit data.

Souhrn

V tomto názorném postupu jsme se podívali na to, jak používat typy výčtů s Entity Framework Code First.