Bagikan melalui


Spasial - Kode Pertama

Catatan

EF5 Onwards Only - Fitur, API, dll. yang dibahas di halaman ini diperkenalkan dalam Entity Framework 5. Jika Anda menggunakan versi yang lebih lama, beberapa atau semua informasi tidak berlaku.

Video dan panduan langkah demi langkah menunjukkan cara memetakan jenis spasial dengan Kode Kerangka Kerja Entitas Terlebih Dahulu. Ini juga menunjukkan cara menggunakan kueri LINQ untuk menemukan jarak antara dua lokasi.

Panduan ini akan menggunakan Kode Pertama untuk membuat database baru, tetapi Anda juga bisa menggunakan Kode Terlebih Dahulu ke database yang sudah ada.

Dukungan jenis spasial diperkenalkan dalam Entity Framework 5. Perhatikan bahwa untuk menggunakan fitur baru seperti jenis spasial, enum, dan fungsi bernilai Tabel, Anda harus menargetkan .NET Framework 4.5. Visual Studio 2012 menargetkan .NET 4.5 secara default.

Untuk menggunakan jenis data spasial, Anda juga harus menggunakan penyedia Kerangka Kerja Entitas yang memiliki dukungan spasial. Lihat dukungan penyedia untuk jenis spasial untuk informasi selengkapnya.

Ada dua jenis data spasial utama: geografi dan geometri. Jenis data geografi menyimpan data elipsoidal (misalnya, koordinat lintang dan bujur GPS). Jenis data geometri mewakili sistem koordinat Euclidean (datar).

Tonton video

Video ini memperlihatkan cara memetakan jenis spasial dengan Kode Kerangka Kerja Entitas Terlebih Dahulu. Ini juga menunjukkan cara menggunakan kueri LINQ untuk menemukan jarak antara dua lokasi.

Disajikan Oleh: Julia Kornich

Video: WMV | MP4 | WMV (ZIP)

Prasyarat

Anda harus menginstal edisi Visual Studio 2012, Ultimate, Premium, Professional, atau Web Express untuk menyelesaikan panduan ini.

Menyiapkan Proyek

  1. Buka Visual Studio 2012
  2. Pada menu File , arahkan ke Baru, lalu klik Proyek
  3. Di panel kiri, klik Visual C#, lalu pilih templat Konsol
  4. Masukkan SpatialCodeFirst sebagai nama proyek dan klik OK

Tentukan Model Baru menggunakan Kode Terlebih Dahulu

Saat menggunakan pengembangan Code First, Anda biasanya mulai dengan menulis kelas .NET Framework yang menentukan model konseptual (domain) Anda. Kode di bawah ini mendefinisikan kelas Universitas.

Universitas memiliki properti Lokasi dari jenis DbGeography. Untuk menggunakan jenis DbGeography, Anda harus menambahkan referensi ke rakitan System.Data.Entity dan juga menambahkan pernyataan System.Data.Spatial menggunakan.

Buka file Program.cs dan tempelkan pernyataan penggunaan berikut di bagian atas file:

using System.Data.Spatial;

Tambahkan definisi kelas Universitas berikut ke file Program.cs.

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

Tentukan Tipe Turunan DbContext

Selain menentukan entitas, Anda perlu menentukan kelas yang berasal dari DbContext dan mengekspos properti DbSet<TEntity> . Properti DbSet<TEntity> memberi tahu konteks jenis mana yang ingin Anda sertakan dalam model.

Instans jenis turunan DbContext mengelola objek entitas selama run time, yang mencakup mengisi objek dengan data dari database, pelacakan perubahan, dan menyimpan data ke database.

Jenis DbContext dan DbSet didefinisikan dalam rakitan EntityFramework. Kami akan menambahkan referensi ke DLL ini dengan menggunakan paket EntityFramework NuGet.

  1. Di Penjelajah Solusi, klik kanan pada nama proyek.
  2. Pilih Kelola Paket NuGet...
  3. Dalam dialog Kelola Paket NuGet, Pilih tab Online dan pilih paket EntityFramework.
  4. Klik Instal

Perhatikan, bahwa selain perakitan EntityFramework, referensi ke rakitan System.ComponentModel.DataAnnotations juga ditambahkan.

Di bagian atas file Program.cs, tambahkan pernyataan penggunaan berikut:

using System.Data.Entity;

Dalam Program.cs tambahkan definisi konteks. 

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

Pertahankan dan Ambil Data

Buka file Program.cs tempat metode Utama ditentukan. Tambahkan kode berikut ke fungsi Utama.

Kode menambahkan dua objek Universitas baru ke konteks. Properti spasial diinisialisasi dengan menggunakan metode DbGeography.FromText. Titik geografi yang diwakili sebagai WellKnownText diteruskan ke metode . Kode kemudian menyimpan data. Kemudian, kueri LINQ yang mengembalikan objek Universitas di mana lokasinya paling dekat dengan lokasi yang ditentukan, dibangun dan dijalankan.

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

Kompilasi dan jalankan aplikasi. Contoh ini menghasilkan output berikut:

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

Menampilkan Database yang Dihasilkan

Saat Anda menjalankan aplikasi untuk pertama kalinya, Kerangka Kerja Entitas membuat database untuk Anda. Karena kami telah menginstal Visual Studio 2012, database akan dibuat pada instans LocalDB. Secara default, Entity Framework memberi nama database setelah nama konteks turunan yang sepenuhnya memenuhi syarat (dalam contoh ini adalah SpatialCodeFirst.UniversityContext). Waktu berikutnya database yang ada akan digunakan.  

Perhatikan, bahwa jika Anda membuat perubahan apa pun pada model Anda setelah database dibuat, Anda harus menggunakan Migrasi Pertama Kode untuk memperbarui skema database. Lihat Kode Pertama ke Database Baru untuk contoh penggunaan Migrasi.

Untuk menampilkan database dan data, lakukan hal berikut:

  1. Di menu utama Visual Studio 2012, pilih Tampilkan ->SQL Server Object Explorer.
  2. Jika LocalDB tidak ada dalam daftar server, klik tombol kanan mouse di SQL Server dan pilih Tambahkan SQL Server Gunakan Autentikasi Windows default untuk menyambungkan ke instans LocalDB
  3. Memperluas simpul LocalDB
  4. Buka folder Database untuk melihat database baru dan telusuri ke tabel Universitas
  5. Untuk melihat data, klik kanan pada tabel dan pilih Tampilkan Data

Ringkasan

Dalam panduan ini kita melihat cara menggunakan jenis spasial dengan Kode Kerangka Kerja Entitas Terlebih Dahulu.