Obsługa Enum — EF Designer

Uwaga / Notatka

Od wersji EF5 — funkcje, interfejsy API itp. omówione na tej stronie zostały wprowadzone w frameworku Entity Framework 5. Jeśli używasz starszej wersji, niektóre lub wszystkie informacje nie mają zastosowania.

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

W tym przewodniku będziemy używać Model First do utworzenia nowej bazy danych, ale EF Designer może być również używany ze ścieżką Database First do mapowania z istniejącą bazą danych.

Obsługa typów wyliczeniowych 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 wideo

W tym filmie pokazano, jak używać typów wyliczeniowych w projektancie Entity Framework. Pokazuje również, jak używać enumów w zapytaniu LINQ.

Prezentowane przez: Julia Kornich

Wideo: WMV | MP4 | WMV (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ź enumEFDesigner jako nazwę projektu i kliknij przycisk OK

Tworzenie nowego modelu przy użyciu projektanta EF

  1. Kliknij prawym przyciskiem myszy nazwę projektu w Eksploratorze rozwiązań, wskaż polecenie Dodaj, a następnie kliknij pozycję Nowy element
  2. Wybierz pozycję Dane z menu po lewej stronie, a następnie wybierz pozycję ADO.NET Model danych jednostki w okienku Szablony
  3. Wprowadź EnumTestModel.edmx jako nazwę pliku, a następnie kliknij Dodaj
  4. Na stronie kreatora Modelu Danych Jednostki wybierz opcję Pusty model w oknie dialogowym wybierania zawartości modelu
  5. Kliknij przycisk Zakończ

Zostanie wyświetlony projektant jednostek, który udostępnia powierzchnię projektową do edycji modelu.

Kreator wykonuje następujące czynności:

  • Generuje plik EnumTestModel.edmx, który definiuje model koncepcyjny, model magazynu i mapowanie między nimi. Ustawia właściwość Metadata Artifact Processing pliku .edmx na "Embed in Output Assembly", aby wygenerowane pliki metadanych zostały osadzone w zestawie.
  • Dodaje odwołanie do następujących zestawów: EntityFramework, System.ComponentModel.DataAnnotations i System.Data.Entity.
  • Tworzy pliki EnumTestModel.tt i EnumTestModel.Context.tt oraz dodaje je w pliku edmx. Te pliki szablonów T4 generują kod definiujący typ pochodny DbContext i typy POCO mapowane na jednostki w modelu .edmx.

Dodawanie nowego typu jednostki

  1. Kliknij prawym przyciskiem myszy pusty obszar powierzchni projektowej, wybierz polecenie Dodaj —> jednostka, zostanie wyświetlone okno dialogowe Nowa jednostka
  2. Określ Dział dla nazwy typu i określ DepartmentID dla nazwy właściwości klucza, pozostaw typ jako Int32.
  3. Kliknij przycisk OK
  4. Kliknij prawym przyciskiem myszy jednostkę i wybierz polecenie Dodaj nową —> właściwość skalarna
  5. Zmień nazwę nowej właściwości na Name
  6. Zmień typ nowej właściwości na Int32 (domyślnie nowa właściwość ma typ String) Aby zmienić typ, otwórz okno Właściwości i zmień właściwość Type na Int32
  7. Dodaj inną właściwość skalarną i zmień jej nazwę na Budget, zmień typ na Decimal

Dodaj typ wyliczeniowy

  1. W projektancie programu Entity Framework kliknij prawym przyciskiem myszy właściwość Name, wybierz polecenie Konwertuj na wyliczenie

    Konwertuj na Enum

  2. W oknie dialogowym Dodaj Enum wpisz DepartmentNames jako nazwę typu Enum, zmień typ bazowy na Int32, a następnie dodaj następujące elementy do typu: English, Math i Economics

    Dodaj typ wyliczenia

  3. Naciśnij przycisk OK

  4. Zapisywanie modelu i kompilowanie projektu

    Uwaga / Notatka

    Podczas kompilacji ostrzeżenia dotyczące niezamapowanych jednostek i skojarzeń mogą pojawić się na liście błędów. Możesz zignorować te ostrzeżenia, ponieważ po wybraniu opcji wygenerowania bazy danych z modelu błędy ujdą.

Jeśli spojrzysz na okno Właściwości, zauważysz, że typ właściwości Name został zmieniony na DepartmentNames , a nowo dodany typ wyliczenia został dodany do listy typów.

Jeśli przejdziesz do okna Przeglądarki Modelu, zobaczysz, że typ został również dodany do węzła Typy Enum.

Przeglądarka modelu

Uwaga / Notatka

Możesz również dodać nowe typy wyliczenia z tego okna, klikając prawym przyciskiem myszy i wybierając pozycję Dodaj typ wyliczenia. Po utworzeniu typu zostanie on wyświetlony na liście typów i będzie można skojarzyć z właściwością

Generowanie bazy danych na podstawie modelu

Teraz możemy wygenerować bazę danych opartą na modelu.

  1. Kliknij prawym przyciskiem myszy puste miejsce na powierzchni Projektanta jednostek i wybierz polecenie Generuj bazę danych na podstawie modelu
  2. Zostanie wyświetlone okno dialogowe Wybieranie połączenia danych Kreatora generowania bazy danych. Kliknij przycisk Nowe połączenie. Określ (localdb)\mssqllocaldb dla nazwy serwera i EnumTest dla bazy danych, a następnie kliknij OK.
  3. Zostanie wyświetlone okno dialogowe z pytaniem, czy chcesz utworzyć nową bazę danych, kliknij przycisk Tak.
  4. Kliknij przycisk Dalej , a Kreator tworzenia bazy danych generuje język definicji danych (DDL) do tworzenia bazy danych Wygenerowany język DDL jest wyświetlany w oknie dialogowym Podsumowanie i ustawienia Uwaga, że język DDL nie zawiera definicji tabeli, która jest mapowana na typ wyliczenia.
  5. Kliknij przycisk Zakończ. Kliknięcie Zakończ nie powoduje wykonania skryptu DDL.
  6. Kreator tworzenia bazy danych wykonuje następujące czynności: Otwiera EnumTest.edmx.sql w edytorze T-SQL Generuje sekcje schematu i mapowania magazynu w pliku EDMX Dodaje informacje o parametrach połączenia do pliku App.config
  7. Kliknij prawym przyciskiem myszy w edytorze T-SQL i wybierz polecenie Wykonaj. Zostanie wyświetlone okno dialogowe Połączenie z serwerem, wprowadź informacje o połączeniu z kroku 2 i kliknij przycisk Połącz.
  8. Aby wyświetlić wygenerowany schemat, kliknij prawym przyciskiem myszy nazwę bazy danych w Eksploratorze obiektów programu SQL Server i wybierz polecenie Odśwież

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

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

DepartmentID: 1 Name: English

Aby wyświetlić dane w bazie danych, kliknij prawym przyciskiem myszy nazwę bazy danych w Eksploratorze obiektów programu SQL Server i wybierz polecenie Odśwież. Następnie kliknij prawym przyciskiem myszy w tabeli i wybierz pozycję Wyświetl dane.

Podsumowanie

W ramach tego przewodnika przyjrzeliśmy się, jak mapować typy wyliczeniowe przy użyciu projektanta Entity Framework oraz jak używać ich w kodzie.