Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
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 bazıları veya tümü geçerli değildir.
Video ve adım adım izlenecek yol, uzamsal türlerin Entity Framework Designer ile nasıl eşleneceği 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 kullanacaktır, ancak EF Designer var olan bir veritabanıyla eşlemek için Database First iş akışıyla da kullanılabilir.
Entity Framework 5'te uzamsal tür desteği sunulmuştur. .NET Framework 4.5'i hedeflemeniz gerektiğini unutmayın, çünkü uzamsal tür, enum ve tablo değerli işlevler gibi yeni özellikleri kullanmak için bu çerçeve gereklidir. 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. Uzamsal türler için sağlayıcı desteği hakkında daha fazla bilgi için bkz.
İ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 izleyin
Bu videoda, Entity Framework Designer 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.
Sunum Yapan: Julia Kornich
Ö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
- Visual Studio 2012'i açma
- Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın
- Sol bölmede Visual C# öğesine tıklayın ve konsol şablonunu seçin
- Projenin adı olarak SpatialEFDesigner yazın ve Tamam'a tıklayın
EF Designer kullanarak Yeni Model Oluşturma
- Çözüm Gezgini'nde proje adına sağ tıklayın, Ekle'nin üzerine gelin ve Yeni Öğe'ye tıklayın
- Soldaki menüden Veri'yi seçin ve ardından Şablonlar bölmesinde Varlık Veri Modeli'ni ADO.NET seçin
- Dosya adı olarak UniversityModel.edmx yazın ve Ekle'ye tıklayın
- Varlık Veri Modeli Sihirbazı sayfasında, Model İçeriği Seç iletişim kutusunda Boş Model'i seçin
- Son’a tıklayın
Modelinizi düzenlemek için bir tasarım yüzeyi sağlayan Varlık Tasarımcısı 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
- 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
- Tür adı olarak Üniversite'yi belirtin ve anahtar özellik adı için UniversityID değerini belirtin, türü Int32 olarak bırakın
- Tamam'a tıklayın
- Varlığa sağ tıklayın ve Yeni Ekle -> Skaler Özellik'i seçin
- Yeni özelliği Ad olarak yeniden adlandırın
- Başka bir skaler özellik ekleyin ve Konum olarak yeniden adlandırın Özellikler penceresini açın ve yeni özelliğin türünü Coğrafya olarak değiştirin
- Modeli kaydetme ve projeyi oluşturma
Uyarı
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 ortadan kalkacak.
Modelden Veritabanı Oluşturma
Artık modeli temel alan bir veritabanı oluşturabiliriz.
- Varlık Tasarımcısı yüzeyinde boş bir alana sağ tıklayın ve Modelden Veritabanı Oluştur'a tıklayın
- Veritabanı Oluşturma Sihirbazı'nın Veri Bağlantınızı Seçin İletişim Kutusu görüntülenir Sunucu adı için Yeni Bağlantı düğmesine (localdb)\mssqllocaldb ve veritabanı için Üniversite'ye tıklayın ve Tamam'a tıklayın
- Yeni veritabanı oluşturmak isteyip istemediğinizi soran bir iletişim kutusu açılır ve Evet'e tıklayın.
- İ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
- Son'a tıklayın Son'a tıklanması DDL betiğini yürütmez.
- Veritabanı Oluşturma Sihirbazı şunları yapar: UniversityModel.edmx.sql 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
- T-SQL Düzenleyicisi'nde sağ fare düğmesine tıklayın ve Sunucuya Bağlan iletişim kutusunu yürüt seçeneğini belirleyin, 2. adımdaki bağlantı bilgilerini girin ve Bağlan'a tıklayın
- Oluşturulan şemayı görüntülemek için SQL Server Nesne Gezgini'nde veritabanı adına sağ tıklayın ve Yenile'yi seçin
Verileri Sakla 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 Üniversite 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'nde 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 Designer'ı kullanarak uzamsal türleri eşlemeyi ve kodda uzamsal türleri kullanmayı inceledik.