Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
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ź enumEFDesigner jako nazwę projektu i kliknij przycisk OK
Tworzenie nowego modelu przy użyciu projektanta EF
- Kliknij prawym przyciskiem myszy nazwę projektu w Eksploratorze rozwiązań, wskaż polecenie Dodaj, a następnie kliknij pozycję Nowy element
- Wybierz pozycję Dane z menu po lewej stronie, a następnie wybierz pozycję ADO.NET Model danych jednostki w okienku Szablony
- Wprowadź EnumTestModel.edmx jako nazwę pliku, a następnie kliknij Dodaj
- Na stronie kreatora Modelu Danych Jednostki wybierz opcję Pusty model w oknie dialogowym wybierania zawartości modelu
- 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
- Kliknij prawym przyciskiem myszy pusty obszar powierzchni projektowej, wybierz polecenie Dodaj —> jednostka, zostanie wyświetlone okno dialogowe Nowa jednostka
- Określ Dział dla nazwy typu i określ DepartmentID dla nazwy właściwości klucza, pozostaw typ jako 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
Dodaj typ wyliczeniowy
W projektancie programu Entity Framework kliknij prawym przyciskiem myszy właściwość Name, wybierz polecenie Konwertuj na wyliczenie
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
Naciśnij przycisk OK
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.
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.
- Kliknij prawym przyciskiem myszy puste miejsce na powierzchni Projektanta jednostek i wybierz polecenie Generuj bazę danych na podstawie modelu
- 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.
- 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 powoduje wykonania skryptu DDL.
- 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
- 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.
- 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.