Térbeli – Első kód

Megjegyzés:

CSAK EF5 – Az ezen az oldalon tárgyalt funkciók, API-k stb. az Entity Framework 5-ben jelentek meg. Ha korábbi verziót használ, az információk egy része vagy egésze nem érvényes.

A videó és a részletes útmutató bemutatja, hogyan képezheti le először a térbeli típusokat az Entity Framework Code-tal. Azt is bemutatja, hogyan használható LINQ-lekérdezés két hely közötti távolság megkeresésére.

Ez az útmutató a Code First használatával hoz létre új adatbázist, de használhatja a Code First-et egy meglévő adatbázishoz is.

A térbeli típus támogatása az Entity Framework 5-ben jelent meg. Vegye figyelembe, hogy az új funkciók, például a térbeli típus, az enumerálás és a táblaértékű függvények használatához meg kell céloznia a .NET-keretrendszer 4.5-öt. A Visual Studio 2012 alapértelmezés szerint a .NET 4.5-öt célozza meg.

Térbeli adattípusok használatához egy térbeli támogatással rendelkező Entity Framework-szolgáltatót is használnia kell. További információkért tekintse meg a térbeli típusok szolgáltatói támogatását .

Két fő térbeli adattípus létezik: a földrajz és a geometria. Az földrajzi adattípus ellipszoid adatokat (például GPS szélességi és hosszúsági koordinátákat) tárol. A geometriai adattípus euklideszi (sík) koordinátarendszert jelöl.

A videó megtekintése

Ez a videó bemutatja, hogyan képezheti le először a térbeli típusokat az Entity Framework Code-tal. Azt is bemutatja, hogyan használható LINQ-lekérdezés két hely közötti távolság megkeresésére.

Készítette: Julia Kornich

Videó: WMV | MP4 | WMV (ZIP)

Előfeltételek

Az útmutató elvégzéséhez telepítve kell lennie a Visual Studio 2012, Ultimate, Premium, Professional vagy Web Express kiadásnak.

A projekt beállítása

  1. A Visual Studio 2012 megnyitása
  2. Mutasson a Fájl menü Új pontjára, majd kattintson a Project gombra
  3. A bal oldali panelen kattintson a Visual C# elemre, majd válassza a Konzolsablont
  4. Adja meg a SpatialCodeFirst nevet a projekt neveként, és kattintson az OK gombra

Új modell definiálása a Code First használatával

A Code First fejlesztés során általában olyan .NET Framework osztályokat kell írnia, amelyek meghatározzák a fogalmi (tartományi) modellt. Az alábbi kód határozza meg az Egyetemi osztályt.

Az Egyetem a DbGeography típus Hely tulajdonságával rendelkezik. A DbGeography típus használatához hivatkozást kell hozzáadnia a System.Data.Entity szerelvényhez, és hozzá kell adnia a System.Data.Spatial utasítást is.

Nyissa meg a Program.cs fájlt, és illessze be a következő utasításokat a fájl tetején:

using System.Data.Spatial;

Adja hozzá a következő Egyetemi osztálydefiníciót a Program.cs fájlhoz.

public class University  
{
    public int UniversityID { get; set; }
    public string Name { get; set; }
    public DbGeography Location { get; set; }
}

A DbContext származtatott típusának meghatározása

Az entitások definiálása mellett meg kell határoznia egy olyan osztályt, amely a DbContextből származik, és elérhetővé teszi a DbSet<TEntity> tulajdonságait. A DbSet<TEntity> tulajdonságai tudatják a környezettel, hogy mely típusokat szeretné belefoglalni a modellbe.

A DbContext származtatott típus egy példánya a futtatás során kezeli az entitásobjektumokat, amely magában foglalja az adatbázisokból származó adatokkal rendelkező objektumok feltöltését, a változáskövetést és az adatok adatbázisba való megőrzését.

A DbContext és a DbSet típusok az EntityFramework szerelvényben vannak definiálva. Ehhez a DLL-hez az EntityFramework NuGet-csomaggal fogunk hivatkozni.

  1. A Megoldáskezelőben kattintson a jobb gombbal a projekt nevére.
  2. Válassza a NuGet-csomagok kezelése...
  3. A NuGet-csomagok kezelése párbeszédpanelen válassza az Online lapot, és válassza az EntityFramework csomagot.
  4. Kattintson a Telepítés gombra

Vegye figyelembe, hogy az EntityFramework-szerelvény mellett a rendszer a System.ComponentModel.DataAnnotations szerelvényre is hivatkozik.

A Program.cs fájl tetején adja hozzá a következő using-direktívát:

using System.Data.Entity;

A Program.cs fájlban adja hozzá a kontextus definícióját. 

public partial class UniversityContext : DbContext
{
    public DbSet<University> Universities { get; set; }
}

Adatok megőrzése és lekérése

Nyissa meg a fő metódust definiáló Program.cs fájlt. Adja hozzá a következő kódot a Fő függvényhez.

A kód két új Egyetemi objektumot ad hozzá a környezethez. A térbeli tulajdonságok inicializálása a DbGeography.FromText metódussal történik. A WellKnownTextként ábrázolt földrajzi pont át lesz adva a metódusnak. A kód ezután menti az adatokat. Ezután létrejön és végrehajtja azt a LINQ-lekérdezést, amely egy egyetemi objektumot ad vissza, ahol a helye a megadott helyhez legközelebbi.

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

Állítsa össze és futtassa az alkalmazást. A program a következő kimenetet állítja elő:

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

A létrehozott adatbázis megtekintése

Az alkalmazás első futtatásakor az Entity Framework létrehoz egy adatbázist. Mivel telepítve van a Visual Studio 2012, az adatbázis a LocalDB-példányon jön létre. Alapértelmezés szerint az Entity Framework a származtatott környezet teljes minősített neve után adja az adatbázist (ebben a példában ez a SpatialCodeFirst.UniversityContext). A meglévő adatbázis későbbi felhasználási időpontjai.  

Vegye figyelembe, hogy ha az adatbázis létrehozása után bármilyen módosítást hajt végre a modellen, az adatbázisséma frissítéséhez először a Code First Migrationst kell használnia. A migrálások használatát példaként lásd: Code First to a New Database .

Az adatbázis és az adatok megtekintéséhez tegye a következőket:

  1. A Visual Studio 2012 főmenüjében válassza a Nézet ->SQL Server Object Explorer lehetőséget.
  2. Ha a LocalDB nincs a kiszolgálók listájában, kattintson az SQL Server jobb egér gombjára, és válassza az SQL Server hozzáadása az alapértelmezett Windows-hitelesítés használatával a LocalDB-példányhoz való csatlakozáshoz
  3. Bontsa ki a LocalDB csomópontot
  4. Bontsa ki az Adatbázisok mappát az új adatbázis megtekintéséhez, és keresse meg az Egyetemek táblát
  5. Az adatok megtekintéséhez kattintson a jobb gombbal a táblára, és válassza az Adatok megtekintése lehetőséget

Összefoglalás

Ebben az útmutatóban azt vizsgáltuk meg, hogyan használhatók a térbeli típusok az Entity Framework Code First használatával.