Bagikan melalui


Spasial - Desainer EF

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 Perancang Kerangka Kerja Entitas. Ini juga menunjukkan cara menggunakan kueri LINQ untuk menemukan jarak antara dua lokasi.

Panduan ini akan menggunakan Model First untuk membuat database baru, tetapi EF Designer juga dapat digunakan dengan alur kerja Database First untuk memetakan 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 menunjukkan cara memetakan jenis spasial dengan Perancang Kerangka Kerja Entitas. 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 SpatialEFDesigner sebagai nama proyek dan klik OK

Membuat Model Baru menggunakan Desainer EF

  1. Klik kanan nama proyek di Penjelajah Solusi, arahkan ke Tambahkan, lalu klik Item Baru
  2. Pilih Data dari menu sebelah kiri lalu pilih ADO.NET Model Data Entitas di panel Templat
  3. Masukkan UniversityModel.edmx untuk nama file, lalu klik Tambahkan
  4. Pada halaman Wizard Model Data Entitas, pilih Model Kosong dalam kotak dialog Pilih Konten Model
  5. Klik Selesai

Perancang Entitas, yang menyediakan permukaan desain untuk mengedit model Anda, ditampilkan.

Wizard melakukan tindakan berikut:

  • Menghasilkan file EnumTestModel.edmx yang menentukan model konseptual, model penyimpanan, dan pemetaan di antaranya. Mengatur properti Pemrosesan Artefak Metadata dari file .edmx ke Sematkan di Output Assembly sehingga file metadata yang dihasilkan disematkan ke dalam rakitan.
  • Menambahkan referensi ke rakitan berikut: EntityFramework, System.ComponentModel.DataAnnotations, dan System.Data.Entity.
  • Membuat file UniversityModel.tt dan UniversityModel.Context.tt dan menambahkannya di bawah file .edmx. File templat T4 ini menghasilkan kode yang menentukan jenis turunan DbContext dan jenis POCO yang memetakan ke entitas dalam model .edmx

Menambahkan Jenis Entitas Baru

  1. Klik kanan area kosong dari permukaan desain, pilih Tambahkan -> Entitas, kotak dialog Entitas Baru muncul
  2. Tentukan Universitas untuk nama jenis dan tentukan UniversityID untuk nama properti kunci, biarkan jenisnya sebagai Int32
  3. Klik OK
  4. Klik kanan entitas dan pilih Tambahkan Baru -> Properti Skalar
  5. Ganti nama properti baru menjadi Nama
  6. Tambahkan properti skalar lain dan ganti namanya menjadi Lokasi Buka jendela Properti dan ubah jenis properti baru menjadi Geografi
  7. Menyimpan model dan membangun proyek

    Catatan

    Saat Anda membuat, peringatan tentang entitas dan asosiasi yang tidak dipetakan mungkin muncul di Daftar Kesalahan. Anda dapat mengabaikan peringatan ini karena setelah kami memilih untuk menghasilkan database dari model, kesalahan akan hilang.

Hasilkan Database dari Model

Sekarang kita dapat menghasilkan database yang didasarkan pada model.

  1. Klik kanan ruang kosong pada permukaan Perancang Entitas dan pilih Hasilkan Database dari Model
  2. Kotak Dialog Pilih Data Koneksi ion Anda dari Panduan Buat Database ditampilkan Klik tombol Koneksi ion Baru Tentukan (localdb)\mssqllocaldb untuk nama server dan Universitas untuk database dan klik OK
  3. Dialog yang menanyakan apakah Anda ingin membuat database baru akan muncul, klik Ya.
  4. Klik Berikutnya dan Wizard Buat Database menghasilkan bahasa definisi data (DDL) untuk membuat database DDL yang dihasilkan ditampilkan dalam Ringkasan dan Pengaturan Catatan Kotak Dialog, bahwa DDL tidak berisi definisi untuk tabel yang memetakan ke jenis enumerasi
  5. Klik Selesai Mengklik Selesai tidak menjalankan skrip DDL.
  6. Wizard Buat Database melakukan hal berikut: Membuka UniversityModel.edmx.sql di Editor T-SQL Menghasilkan skema penyimpanan dan bagian pemetaan file EDMX Menambahkan informasi string koneksi ke file App.config
  7. Klik tombol kanan mouse di Editor T-SQL dan pilih Dialog Jalankan Koneksi ke Server muncul, masukkan informasi koneksi dari langkah 2 dan klik Koneksi
  8. Untuk melihat skema yang dihasilkan, klik kanan pada nama database di SQL Server Object Explorer dan pilih Refresh

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

Kompilasi dan jalankan aplikasi. Contoh ini menghasilkan output berikut:

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

Untuk menampilkan data dalam database, klik kanan pada nama database di SQL Server Object Explorer dan pilih Refresh. Kemudian, klik tombol kanan mouse pada tabel dan pilih Tampilkan Data.

Ringkasan

Dalam panduan ini kita melihat cara memetakan jenis spasial menggunakan Perancang Kerangka Kerja Entitas dan cara menggunakan jenis spasial dalam kode.