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 filmie wideo i przewodniku krok po kroku pokazano, jak mapować typy przestrzenne przy użyciu funkcji Entity Framework Code First. Pokazano również, jak za pomocą zapytania LINQ znaleźć odległość między dwiema lokalizacjami.
Ten przewodnik będzie używać funkcji Code First do utworzenia nowej bazy danych, ale możesz również użyć funkcji Code First do istniejącej bazy 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ługę dostawców dla typów przestrzennych.
Istnieją dwa główne typy danych przestrzennych: geografia i geometria. Typ danych geograficznych przechowuje dane elipsoidalne (na przykład współrzędne szerokości i długości geograficznej GPS). Typ danych geometrycznych reprezentuje układ współrzędnych Euklidesan (płaski).
Obejrzyj film wideo
W tym filmie wideo pokazano, jak mapować typy przestrzenne za pomocą programu Entity Framework Code First. Pokazano również, jak za pomocą zapytania LINQ znaleźć odległość między dwiema lokalizacjami.
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ź spatialCodeFirst 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ę Uniwersytet.
Uniwersytet ma właściwość Location typu DbGeography. Aby użyć typu DbGeography, należy dodać odwołanie do zestawu System.Data.Entity, a także dodać instrukcję System.Data.Spatial using.
Otwórz plik Program.cs i wklej następujące instrukcje using w górnej części pliku:
using System.Data.Spatial;
Dodaj następującą definicję klasy University do pliku Program.cs.
public class University
{
public int UniversityID { get; set; }
public string Name { get; set; }
public DbGeography Location { get; set; }
}
Definiowanie typu pochodnego DbContext
Oprócz definiowania jednostek należy zdefiniować klasę dziedziczącą po DbContext i eksponującą właściwości DbSet<TEntity>. 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 encji podczas działania, co obejmuje wypełnianie obiektów danymi z bazy danych, śledzenie zmian i zapisywanie danych w niej.
Typy DbContext i DbSet są definiowane w zestawie EntityFramework. Dodamy odwołanie do tej biblioteki DLL przy użyciu pakietu NuGet EntityFramework.
- W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy nazwę projektu.
- Wybierz pozycję Zarządzaj pakietami NuGet...
- W oknie dialogowym Zarządzanie pakietami NuGet wybierz kartę Online i wybierz pakiet EntityFramework .
- Kliknij pozycję Zainstaluj
Należy pamiętać, że oprócz zestawu EntityFramework dodano również odwołanie do zestawu System.ComponentModel.DataAnnotations.
W górnej części pliku Program.cs dodaj następującą instrukcję using:
using System.Data.Entity;
W Program.cs dodaj definicję kontekstu.
public partial class UniversityContext : DbContext
{
public DbSet<University> Universities { 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 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 konstruowane i wykonywane jest zapytanie LINQ, które zwraca obiekt Uniwersytetu najbliżej określonej lokalizacji.
using (var context = new UniversityContext ())
{
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.
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 na instancji LocalDB. Domyślnie platforma Entity Framework nazywa bazę danych po w pełni kwalifikowanej nazwie kontekstu pochodnego (w tym przykładzie jest to SpatialCodeFirst.UniversityContext). 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ć funkcji Code First Migrations w celu zaktualizowania schematu 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:
- W menu głównym programu Visual Studio 2012 wybierz pozycję Widok ->Eksplorator obiektów programu SQL Server.
- 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
- Rozwiń węzeł LocalDB
- Rozwiń folder Bazy danych, aby wyświetlić nową bazę danych i przejść do tabeli Uniwersytety
- Aby wyświetlić dane, kliknij prawym przyciskiem myszy tabelę i wybierz polecenie Wyświetl dane
Podsumowanie
W tym przewodniku przyjrzeliśmy się sposobom używania typów przestrzennych z programem Entity Framework Code First.