Uzamsal - Önce Kod

Dekont

YALNıZCA EF5'e Doğru - Bu sayfada ele alınan özellikler, API'ler vb. Entity Framework 5'te sunulmuştur. Önceki bir sürümü kullanıyorsanız, bilgilerin bir kısmı veya tümü geçerli değildir.

Video ve adım adım izlenecek yol, Entity Framework Code First ile uzamsal türleri eşlemeyi gösterir. Ayrıca iki konum arasındaki mesafeyi bulmak için LINQ sorgusu kullanmayı da gösterir.

Bu izlenecek yol, yeni bir veritabanı oluşturmak için Önce Kod kullanacaktır, ancak mevcut bir veritabanı için De Code First kullanabilirsiniz.

Entity Framework 5'te uzamsal tür desteği sunulmuştur. Uzamsal tür, sabit listeleri ve Tablo değerli işlevler gibi yeni özellikleri kullanmak için .NET Framework 4.5'i hedeflemeniz gerektiğini unutmayın. Visual Studio 2012 varsayılan olarak .NET 4.5'i hedefler.

Uzamsal veri türlerini kullanmak için uzamsal desteğe sahip bir Entity Framework sağlayıcısı da kullanmanız gerekir. Daha fazla bilgi için bkz . Uzamsal türler için sağlayıcı desteği.

İki ana uzamsal veri türü vardır: coğrafya ve geometri. Coğrafya veri türü üç noktalı verileri (örneğin, GPS enlemi ve boylam koordinatları) depolar. Geometri veri türü Öklid (düz) koordinat sistemini temsil eder.

Videoyu izleme

Bu videoda, Entity Framework Code First ile uzamsal türlerin nasıl eşleneceği gösterilmektedir. Ayrıca iki konum arasındaki mesafeyi bulmak için LINQ sorgusu kullanmayı da gösterir.

Sunan: Julia Kornich

Video: WMV | MP4 | WMV (ZIP)

Önkoşullar

Bu kılavuzu tamamlamak için Visual Studio 2012, Ultimate, Premium, Professional veya Web Express sürümünün yüklü olması gerekir.

Projeyi ayarlama

  1. Visual Studio 2012'i açma
  2. Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın
  3. Sol bölmede Visual C# öğesine tıklayın ve konsol şablonunu seçin
  4. Projenin adı olarak SpatialCodeFirst girin ve Tamam'a tıklayın

Önce Kod Kullanarak Yeni Model Tanımlama

Code First geliştirmesini kullanırken genellikle kavramsal (etki alanı) modelinizi tanımlayan .NET Framework sınıfları yazarak başlarsınız. Aşağıdaki kod Üniversite sınıfını tanımlar.

Üniversite, DbGeography türünün Location özelliğine sahiptir. DbGeography türünü kullanmak için System.Data.Entity derlemesine bir başvuru eklemeli ve ayrıca deyimini kullanarak System.Data.Spatial'ı eklemelisiniz.

Program.cs dosyasını açın ve dosyanın en üstüne aşağıdaki deyimleri kullanarak yapıştırın:

using System.Data.Spatial;

Program.cs dosyasına aşağıdaki Üniversite sınıf tanımını ekleyin.

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

DbContext Türetilmiş Türünü Tanımlama

Varlıkları tanımlamaya ek olarak, DbContext'ten türetilen ve DbSet<TEntity> özelliklerini kullanıma sunan bir sınıf tanımlamanız gerekir. DbSet<TEntity> özellikleri, bağlama modele hangi türleri eklemek istediğinizi bildirir.

DbContext türetilmiş türünün bir örneği, çalışma zamanında varlık nesnelerini yönetir. Bu, nesneleri veritabanındaki verilerle doldurma, değişiklik izleme ve verileri veritabanında kalıcı hale getirme gibi işlemleri içerir.

DbContext ve DbSet türleri EntityFramework derlemesinde tanımlanır. EntityFramework NuGet paketini kullanarak bu DLL'ye bir başvuru ekleyeceğiz.

  1. Çözüm Gezgini'da proje adına sağ tıklayın.
  2. NuGet Paketlerini Yönet... öğesini seçin .
  3. NuGet Paketlerini Yönet iletişim kutusunda Çevrimiçi sekmesini seçin ve EntityFramework paketini seçin.
  4. Yükle'ye tıklayın

EntityFramework derlemesine ek olarak System.ComponentModel.DataAnnotations derlemesine de başvuru eklendiğini unutmayın.

Program.cs dosyasının en üstüne aşağıdaki using deyimini ekleyin:

using System.Data.Entity;

Program.cs dosyasına bağlam tanımını ekleyin. 

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

Verileri Kalıcı Hale Getir ve Al

Main yönteminin tanımlandığı Program.cs dosyasını açın. Main işlevine aşağıdaki kodu ekleyin.

Kod, bağlama iki yeni University nesnesi ekler. Uzamsal özellikler DbGeography.FromText yöntemi kullanılarak başlatılır. WellKnownText olarak temsil edilen coğrafya noktası yöntemine geçirilir. Kod daha sonra verileri kaydeder. Ardından, konumunun belirtilen konuma en yakın olduğu Üniversite nesnesini döndüren LINQ sorgusu oluşturulur ve yürütülür.

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

Uygulamayı derleyin ve çalıştırın. Program aşağıdaki çıkışı oluşturur:

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

Oluşturulan Veritabanını Görüntüleme

Uygulamayı ilk kez çalıştırdığınızda, Entity Framework sizin için bir veritabanı oluşturur. Visual Studio 2012 yüklü olduğundan veritabanı LocalDB örneğinde oluşturulur. Varsayılan olarak, Entity Framework veritabanını türetilen bağlamın tam adından sonra (bu örnekte SpatialCodeFirst.UniversityContext) adlandırabilir. Mevcut veritabanı sonraki zamanlarda kullanılacaktır.  

Veritabanı oluşturulduktan sonra modelinizde herhangi bir değişiklik yaparsanız, veritabanı şemasını güncelleştirmek için Code First Migrations kullanmanız gerektiğini unutmayın. Geçişleri kullanma örneği için bkz . Yeni Veritabanına İlk Kod.

Veritabanını ve verileri görüntülemek için aşağıdakileri yapın:

  1. Visual Studio 2012 ana menüsünde Görünüm ->SQL Server Nesne Gezgini'ni seçin.
  2. LocalDB sunucu listesinde değilse, SQL Server'da sağ fare düğmesine tıklayın ve SQL Server Ekle LocalDB örneğine bağlanmak için varsayılan Windows Kimlik Doğrulamasını kullan'ı seçin
  3. LocalDB düğümünü genişletme
  4. Yeni veritabanını görmek ve Üniversiteler tablosuna göz atmak için Veritabanları klasörünü açın
  5. Verileri görüntülemek için tabloya sağ tıklayın ve Verileri Görüntüle'yi seçin

Özet

Bu kılavuzda, Entity Framework Code First ile uzamsal türlerin nasıl kullanılacağını inceledik.