Uzamsal - EF Tasarım Aracı

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 Tasarım Aracı 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 Model First'i kullanır, ancak EF Tasarım Aracı var olan bir veritabanıyla eşlemek için Önce Veritabanı iş akışıyla da kullanılabilir.

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 Tasarım Aracı 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 SpatialEF Tasarım Aracı girin ve Tamam'a tıklayın

EF Tasarım Aracı kullanarak Yeni Model Oluşturma

  1. Çözüm Gezgini'de proje adına sağ tıklayın, Ekle'nin üzerine gelin ve Yeni Öğe'ye tıklayın
  2. Soldaki menüden Veri'yi seçin ve ardından Şablonlar bölmesinde Varlık Veri Modeli'ni ADO.NET seçin
  3. Dosya adı olarak UniversityModel.edmx yazın ve Ekle'ye tıklayın
  4. Varlık Veri Modeli Sihirbazı sayfasında, Model İçeriği Seç iletişim kutusunda Boş Model'i seçin
  5. Son’a tıklayın

Modelinizi düzenlemek için bir tasarım yüzeyi sağlayan Entity Tasarım Aracı görüntülenir.

Sihirbaz aşağıdaki eylemleri gerçekleştirir:

  • Kavramsal modeli, depolama modelini ve aralarındaki eşlemeyi tanımlayan EnumTestModel.edmx dosyasını oluşturur. Oluşturulan meta veri dosyalarının derlemeye eklenmesi için .edmx dosyasının Meta Veri Yapıt İşleme özelliğini Çıktı Derlemesine Ekle olarak ayarlar.
  • Aşağıdaki derlemelere bir başvuru ekler: EntityFramework, System.ComponentModel.DataAnnotations ve System.Data.Entity.
  • UniversityModel.tt ve UniversityModel.Context.tt dosyaları oluşturur ve bunları .edmx dosyasının altına ekler. Bu T4 şablon dosyaları, .edmx modelindeki varlıklarla eşlenen DbContext türetilmiş türünü ve POCO türlerini tanımlayan kodu oluşturur

Yeni Varlık Türü Ekleme

  1. Tasarım yüzeyinin boş bir alanına sağ tıklayın, Ekle -> Varlık'ı seçin, Yeni Varlık iletişim kutusu görüntülenir
  2. Tür adı olarak Üniversite'yi belirtin ve anahtar özellik adı için UniversityID değerini belirtin, türü Int32 olarak bırakın
  3. Tamam’a tıklayın.
  4. Varlığa sağ tıklayın ve Yeni Ekle -> Skaler Özellik'i seçin
  5. Yeni özelliği Ad olarak yeniden adlandırın
  6. Başka bir skaler özellik ekleyin ve Konum olarak yeniden adlandırın Özellikler penceresi açın ve yeni özelliğin türünü Coğrafya olarak değiştirin
  7. Modeli kaydetme ve projeyi oluşturma

    Dekont

    Oluşturduğunuzda, eşlenmemiş varlıklar ve ilişkilendirmeler hakkındaki uyarılar Hata Listesi'nde görünebilir. Bu uyarıları yoksayabilirsiniz çünkü modelden veritabanı oluşturmayı seçtikten sonra hatalar gider.

Modelden Veritabanı Oluşturma

Artık modeli temel alan bir veritabanı oluşturabiliriz.

  1. Varlık Tasarım Aracı yüzeyinde boş bir alana sağ tıklayın ve Modelden Veritabanı Oluştur'a tıklayın
  2. Veritabanı Oluşturma Sihirbazı'nın Veri Bağlan Seçin İletişim Kutusu görüntülenir Yeni Bağlan ion düğmesine tıklayın, veritabanı için sunucu adı (localdb)\mssqllocaldb ve Ardından Tamam'a tıklayın
  3. Yeni veritabanı oluşturmak isteyip istemediğinizi soran bir iletişim kutusu açılır ve Evet'e tıklayın.
  4. İleri'ye tıklayın ve Veritabanı Oluşturma Sihirbazı veritabanı oluşturmak için veri tanımı dili (DDL) oluşturur Oluşturulan DDL Özet ve Ayarlar İletişim Kutusu Notunda görüntülenir; DDL,numaralandırma türüne eşlenen bir tablo için tanım içermez
  5. Son'a tıklayın Son'a tıklanması DDL betiğini yürütmez.
  6. Veritabanı Oluşturma Sihirbazı şunları yapar: UniversityModel.edmx.sql dosyasını T-SQL Düzenleyicisi'nde açar EDMX dosyasının depo şemasını ve eşleme bölümlerini oluşturur App.config dosyasına bağlantı dizesi bilgileri ekler
  7. T-SQL Düzenleyicisi'nde sağ fare düğmesine tıklayın ve Sunucuya Bağlan Yürüt iletişim kutusu görüntülenir'i seçin, 2. adımdaki bağlantı bilgilerini girin ve Bağlan
  8. Oluşturulan şemayı görüntülemek için SQL Server Nesne Gezgini veritabanı adına sağ tıklayın ve Yenile'yi seçin

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

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

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

Veritabanındaki verileri görüntülemek için SQL Server Nesne Gezgini'da veritabanı adına sağ tıklayın ve Yenile'yi seçin. Ardından, tablodaki sağ fare düğmesine tıklayın ve Verileri Görüntüle'yi seçin.

Özet

Bu kılavuzda Entity Framework Tasarım Aracı kullanarak uzamsal türleri eşlemeyi ve kodda uzamsal türleri kullanmayı inceledik.