Udostępnij za pośrednictwem


Obsługa wyliczenia — kod pierwszy

Uwaga

Tylko platforma EF5 — funkcje, interfejsy API itp. omówione na tej stronie zostały wprowadzone w programie Entity Framework 5. Jeśli korzystasz ze starszej wersji, niektóre lub wszystkie podane informacje nie mają zastosowania.

W tym filmie wideo i przewodniku krok po kroku pokazano, jak używać typów wyliczenia z programem Entity Framework Code First. Pokazuje również, jak używać wyliczenia w zapytaniu LINQ.

Ten przewodnik będzie używać funkcji Code First do utworzenia nowej bazy danych, ale można również użyć funkcji Code First do mapowania na istniejącą bazę danych.

Obsługa wyliczenia została wprowadzona w programie Entity Framework 5. Aby korzystać z nowych funkcji, takich jak wyliczenia, typy danych przestrzennych i funkcje z wartościami tabel, należy użyć platformy .NET Framework 4.5. Program Visual Studio 2012 domyślnie jest przeznaczony dla platformy .NET 4.5.

W programie Entity Framework wyliczenie może mieć następujące typy bazowe: Byte, Int16, Int32, Int64 lub SByte.

Obejrzyj film

W tym filmie wideo pokazano, jak używać typów wyliczenia z programem Entity Framework Code First. Pokazuje również, jak używać wyliczenia w zapytaniu LINQ.

Prezentowane przez: Julia Kornich

Wideo: NULL | MP4 | ZIP (ZIP)

Wymagania wstępne

Aby ukończyć ten przewodnik, musisz mieć zainstalowany program Visual Studio 2012, Ultimate, Premium, Professional lub Web Express.

 

Konfigurowanie projektu

  1. Otwórz program Visual Studio 2012
  2. W menu Plik wskaż polecenie Nowy, a następnie kliknij pozycję Projekt
  3. W okienku po lewej stronie kliknij pozycję Visual C#, a następnie wybierz szablon Konsola
  4. Wprowadź wartość EnumCodeFirst jako nazwę projektu i kliknij przycisk OK.

Definiowanie nowego modelu przy użyciu funkcji Code First

W przypadku korzystania z programowania Code First zwykle zaczynasz od pisania klas programu .NET Framework, które definiują model koncepcyjny (domena). Poniższy kod definiuje klasę Dział.

Kod definiuje również wyliczenie DepartmentNames. Domyślnie wyliczenie jest typu int . Właściwość Name w klasie Department jest typu DepartmentNames.

Otwórz plik Program.cs i wklej następujące definicje klas.

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; }
}

 

Definiowanie typu pochodnego DbContext

Oprócz definiowania jednostek należy zdefiniować klasę pochodzącą z elementu DbContext i uwidaczniać właściwości TEntity> zestawu dbSet<. Właściwości DbSet<TEntity> poinformują kontekst o typach, które mają zostać uwzględnione w modelu.

Wystąpienie typu pochodnego DbContext zarządza obiektami jednostki w czasie wykonywania, co obejmuje wypełnianie obiektów danymi z bazy danych, śledzenie zmian i utrwalanie danych do bazy danych.

Typy DbContext i DbSet są definiowane w zestawie EntityFramework. Dodamy odwołanie do tej biblioteki DLL przy użyciu pakietu NuGet EntityFramework.

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu.
  2. Wybierz pozycję Zarządzaj pakietami NuGet...
  3. W oknie dialogowym Zarządzanie pakietami NuGet wybierz kartę Online i wybierz pakiet EntityFramework.
  4. Kliknij pozycję Zainstaluj

Należy pamiętać, że oprócz zestawu EntityFramework dodawane są również odwołania do elementów System.ComponentModel.DataAnnotations i System.Data.Entity.

W górnej części pliku Program.cs dodaj następującą instrukcję using:

using System.Data.Entity;

W pliku Program.cs dodaj definicję kontekstu. 

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

 

Utrwalanie i pobieranie danych

Otwórz plik Program.cs, w którym zdefiniowano metodę Main. Dodaj następujący kod do funkcji Main. Kod dodaje nowy obiekt Działu do kontekstu. Następnie zapisuje dane. Kod wykonuje również zapytanie LINQ, które zwraca dział, w którym nazwa to 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);
}

Skompiluj i uruchom aplikację. Program generuje następujące dane wyjściowe:

DepartmentID: 1 Name: English

 

Wyświetlanie wygenerowanej bazy danych

Po pierwszym uruchomieniu aplikacji program Entity Framework utworzy bazę danych. Ponieważ mamy zainstalowany program Visual Studio 2012, baza danych zostanie utworzona w wystąpieniu bazy danych LocalDB. Domyślnie platforma Entity Framework nazywa bazę danych po w pełni kwalifikowanej nazwie kontekstu pochodnego (na przykład enumCodeFirst.EnumTestContext). W kolejnych przypadkach będzie używana istniejąca baza danych.  

Należy pamiętać, że jeśli po utworzeniu bazy danych wprowadzisz jakiekolwiek zmiany w modelu, należy użyć Migracje Code First, aby zaktualizować schemat bazy danych. Zobacz Code First to a New Database (Kod pierwszy do nowej bazy danych ), aby zapoznać się z przykładem używania migracji.

Aby wyświetlić bazę danych i dane, wykonaj następujące czynności:

  1. W menu głównym programu Visual Studio 2012 wybierz pozycję Widok ->SQL Server Eksplorator obiektów.
  2. Jeśli baza danych LocalDB nie znajduje się na liście serwerów, kliknij prawym przyciskiem myszy w programie SQL Server i wybierz pozycję Dodaj program SQL Server Użyj domyślnego uwierzytelniania systemu Windows, aby nawiązać połączenie z wystąpieniem bazy danych LocalDB
  3. Rozwiń węzeł LocalDB
  4. Rozwiń folder Bazy danych, aby wyświetlić nową bazę danych i przejść do tabeli Dział Uwaga, że Funkcja Code First nie tworzy tabeli mapowania na typ wyliczenia
  5. Aby wyświetlić dane, kliknij prawym przyciskiem myszy tabelę i wybierz polecenie Wyświetl dane

Podsumowanie

W tym przewodniku przyjrzeliśmy się, jak używać typów wyliczeniowych z programem Entity Framework Code First.