Obsługa wyliczenia — ef Projektant
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 Projektant Entity Framework. Pokazuje również, jak używać wyliczenia w zapytaniu LINQ.
Ten przewodnik będzie używać modelu First do utworzenia nowej bazy danych, ale Projektant EF może być również używany z przepływem pracy Database 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 wideo
W tym filmie wideo pokazano, jak używać typów wyliczenia z Projektant Entity Framework. Pokazuje również, jak używać wyliczenia w zapytaniu LINQ.
Prezentowane przez: Julia Kornich
Wymagania wstępne
Aby ukończyć ten przewodnik, musisz mieć zainstalowany program Visual Studio 2012, Ultimate, Premium, Professional lub Web Express.
Konfigurowanie projektu
- Otwórz program Visual Studio 2012
- W menu Plik wskaż polecenie Nowy, a następnie kliknij pozycję Projekt
- W okienku po lewej stronie kliknij pozycję Visual C#, a następnie wybierz szablon Konsola
- Wprowadź enumEF Projektant jako nazwę projektu i kliknij przycisk OK
Tworzenie nowego modelu przy użyciu Projektant EF
- Kliknij prawym przyciskiem myszy nazwę projektu w Eksplorator rozwiązań, wskaż polecenie Dodaj, a następnie kliknij polecenie Nowy element
- Wybierz pozycję Dane z menu po lewej stronie, a następnie wybierz pozycję ADO.NET Model danych jednostki w okienku Szablony
- Wprowadź wartość EnumTestModel.edmx jako nazwę pliku, a następnie kliknij przycisk Dodaj
- Na stronie Kreator modelu danych jednostki wybierz pozycję Pusty model w oknie dialogowym Wybieranie zawartości modelu
- Kliknij przycisk Zakończ
Zostanie wyświetlona Projektant Jednostka, która 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 osadź w zestawie wyjściowym, 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
- Kliknij prawym przyciskiem myszy pusty obszar powierzchni projektowej, wybierz polecenie Dodaj —> jednostka, zostanie wyświetlone okno dialogowe Nowa jednostka
- Określ nazwę typu Dział i określ Identyfikator działu dla nazwy właściwości klucza, pozostaw typ Int32
- Kliknij przycisk OK.
- Kliknij prawym przyciskiem myszy jednostkę i wybierz polecenie Dodaj nową —> właściwość skalarna
- Zmień nazwę nowej właściwości na Name
- 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
- Dodaj inną właściwość skalarną i zmień jej nazwę na Budget, zmień typ na Decimal
Dodawanie typu wyliczenia
W Projektant Entity Framework kliknij prawym przyciskiem myszy właściwość Name, a następnie wybierz polecenie Konwertuj na wyliczenie
W oknie dialogowym Dodawanie wyliczenia wpisz DepartmentNames dla nazwy typu wyliczenia, zmień typ bazowy na Int32, a następnie dodaj następujące elementy członkowskie do typu: angielski, matematyka i ekonomia
Naciśnij przycisk OK
Zapisywanie modelu i kompilowanie projektu
Uwaga
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ądarka modelu, zobaczysz, że typ został również dodany do węzła Typy wyliczenia.
Uwaga
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.
- Kliknij prawym przyciskiem myszy puste miejsce na powierzchni Projektant jednostki i wybierz polecenie Generuj bazę danych na podstawie modelu
- Zostanie wyświetlone okno dialogowe Wybieranie Połączenie ion danych Kreatora generowania bazy danych Kliknij przycisk Nowy Połączenie ion Określ (localdb)\mssqllocaldb dla nazwy serwera i EnumTest dla bazy danych, a następnie kliknij przycisk OK
- Zostanie wyświetlone okno dialogowe z pytaniem, czy chcesz utworzyć nową bazę danych, kliknij przycisk Tak.
- 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.
- Kliknij przycisk Zakończ kliknięcie zakończ nie wykonuje skryptu DDL.
- Kreator tworzenia bazy danych wykonuje następujące czynności: Otwiera plik EnumTest.edmx.sql w edytorze T-SQL Generuje sekcje schematu i mapowania magazynu w pliku EDMX Dodaje informacje parametry połączenia do pliku App.config
- Kliknij prawym przyciskiem myszy w Edytorze języka T-SQL i wybierz polecenie Wykonaj Połączenie na serwerze zostanie wyświetlone okno dialogowe, wprowadź informacje o połączeniu z kroku 2 i kliknij przycisk Połączenie
- Aby wyświetlić wygenerowany schemat, kliknij prawym przyciskiem myszy nazwę bazy danych w programie SQL Server Eksplorator obiektów 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 programie SQL Server Eksplorator obiektów i wybierz polecenie Odśwież. Następnie kliknij prawym przyciskiem myszy w tabeli i wybierz pozycję Wyświetl dane.
Podsumowanie
W tym przewodniku przyjrzeliśmy się sposobom mapowania typów wyliczeniowych przy użyciu Projektant Entity Framework i używania wyliczenia w kodzie.