Udostępnij za pośrednictwem


Spatial — 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 filmie wideo i przewodniku krok po kroku pokazano, jak mapować typy przestrzenne przy użyciu platformy Entity Framework Projektant. Pokazano również, jak za pomocą zapytania LINQ znaleźć odległość między dwiema lokalizacjami.

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 typów przestrzennych została wprowadzona w programie Entity Framework 5. Należy pamiętać, że aby używać nowych funkcji, takich jak typ przestrzenny, wyliczenia 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.

Aby korzystać z typów danych przestrzennych, należy również użyć dostawcy programu Entity Framework, który ma obsługę przestrzenną. Aby uzyskać więcej informacji, zobacz obsługa dostawców dla typów przestrzennych.

Istnieją dwa główne typy danych przestrzennych: geografia i geometria. Typ danych geografii przechowuje wielokropek danych (na przykład współrzędne szerokości geograficznej i długości geograficznej GPS). Typ danych geometrycznych reprezentuje układ współrzędnych Euklidesan (płaski).

Obejrzyj film

W tym filmie wideo pokazano, jak mapować typy przestrzenne za pomocą Projektant Entity Framework. Pokazano również, jak za pomocą zapytania LINQ znaleźć odległość między dwiema lokalizacjami.

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ź spatialEF Projektant jako nazwę projektu i kliknij przycisk OK

Tworzenie nowego modelu przy użyciu Projektant EF

  1. Kliknij prawym przyciskiem myszy nazwę projektu w Eksplorator rozwiązań, wskaż polecenie Dodaj, a następnie kliknij polecenie 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ź wartość UniversityModel.edmx jako nazwę pliku, a następnie kliknij przycisk Dodaj
  4. Na stronie Kreator modelu danych jednostki wybierz pozycję Pusty model w oknie dialogowym Wybieranie zawartości modelu
  5. 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 UniversityModel.tt i pliki UniversityModel.Context.tt i 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 wartość University jako nazwę typu i określ Wartość UniversityID jako nazwę właściwości klucza, pozostaw typ 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. Dodaj inną właściwość skalarną i zmień jej nazwę na Location (Lokalizacja) Otwórz okno Właściwości i zmień typ nowej właściwości na Geography
  7. 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ą.

Generowanie bazy danych na podstawie modelu

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

  1. Kliknij prawym przyciskiem myszy puste miejsce na powierzchni Projektant jednostki i wybierz polecenie Generuj bazę danych na podstawie modelu
  2. Zostanie wyświetlone okno dialogowe Wybieranie Połączenie ion danych Kreatora generowania bazy danych Kliknij przycisk Nowy Połączenie ion Określ (localdb)\mssqllocaldb jako nazwę serwera i Uniwersytet dla bazy danych, a następnie kliknij przycisk 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 wykonuje skryptu DDL.
  6. Kreator tworzenia bazy danych wykonuje następujące czynności: Otwiera plik UniversityModel.edmx.sql w edytorze T-SQL Generuje sekcje schematu i mapowania magazynu w pliku EDMX dodaje informacje o parametry połączenia do pliku App.config
  7. 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
  8. 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 dwa nowe obiekty Uniwersytetu do kontekstu. Właściwości przestrzenne są inicjowane przy użyciu metody DbGeography.FromText. Punkt geografii reprezentowany jako WellKnownText jest przekazywany do metody . Następnie kod zapisuje dane. Następnie zapytanie LINQ zwracające obiekt Uniwersytetu, w którym jego lokalizacja znajduje się najbliżej określonej lokalizacji, jest konstruowana i wykonywana.

using (var context = new UniversityModelContainer())
{
    context.Universities.Add(new University()
    {
        Name = "Graphic Design Institute",
        Location = DbGeography.FromText("POINT(-122.336106 47.605049)"),
    });

    context.Universities.Add(new University()
    {
        Name = "School of Fine Art",
        Location = DbGeography.FromText("POINT(-122.335197 47.646711)"),
    });

    context.SaveChanges();

    var myLocation = DbGeography.FromText("POINT(-122.296623 47.640405)");

    var university = (from u in context.Universities
                                orderby u.Location.Distance(myLocation)
                                select u).FirstOrDefault();

    Console.WriteLine(
        "The closest University to you is: {0}.",
        university.Name);
}

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

The closest University to you is: School of Fine Art.

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ę, jak mapować typy przestrzenne przy użyciu platformy Entity Framework Projektant i jak używać typów przestrzennych w kodzie.