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.
Bu kılavuzda, Entity Framework Designer (EF Designer) ile bir modeli değiştirerek bir varlık türünün iki tabloya nasıl eşleneceği gösterilmektedir. Tablolar ortak bir anahtarı paylaştığında bir varlığı birden çok tabloya eşleyebilirsiniz. Bir varlık türünü iki tabloya eşlemek için uygulanan kavramlar, bir varlık türünü ikiden fazla tabloyla eşlemek için kolayca genişletilir.
Aşağıdaki görüntüde EF Designer ile çalışırken kullanılan ana pencereler gösterilmektedir.
Önkoşullar
Visual Studio 2012 veya Visual Studio 2010, Ultimate, Premium, Professional veya Web Express sürümü.
Veritabanı Oluşturma
Visual Studio ile yüklenen veritabanı sunucusu, yüklediğiniz Visual Studio sürümüne bağlı olarak farklıdır:
- Visual Studio 2012 kullanıyorsanız bir LocalDB veritabanı oluşturacaksınız.
- Visual Studio 2010 kullanıyorsanız bir SQL Express veritabanı oluşturacaksınız.
İlk olarak, tek bir varlıkta birleştireceğimiz iki tablo içeren bir veritabanı oluşturacağız.
- Visual Studio’yu açın
- Görünüm -> Sunucu Gezgini
- Veri Bağlantıları -> Bağlantı Ekle... öğesine sağ tıklayın.
- Veri kaynağı olarak Microsoft SQL Server'ı seçmeniz gerekmeden önce Sunucu Gezgini'nden bir veritabanına bağlanmadıysanız
- Hangisini yüklediğinize bağlı olarak LocalDB veya SQL Express'e bağlanın
- Veritabanı adı olarak EntitySplitting girin
- Tamam'ı seçtiğinizde yeni veritabanı oluşturmak isteyip istemediğiniz sorulur ve Evet'i seçin
- Yeni veritabanı artık Sunucu Gezgini'nde görünür
- Visual Studio 2012 kullanıyorsanız
- Sunucu Gezgini'nde veritabanına sağ tıklayın ve Yeni Sorgu'yu seçin
- Aşağıdaki SQL'i yeni sorguya kopyalayın, ardından sorguya sağ tıklayın ve Yürüt'e tıklayın
- Visual Studio 2010 kullanıyorsanız
- Veri -> transact SQL Düzenleyicisi -> Yeni Sorgu Bağlantısı... öğesini seçin
- Sunucu adı olarak .\SQLEXPRESS yazın ve Tamam'a tıklayın
- Sorgu düzenleyicisinin üst kısmındaki açılan listeden EntitySplitting veritabanını seçin
- Aşağıdaki SQL'i yeni sorguya kopyalayın, ardından sorguya sağ tıklayın ve SQL Yürüt'e tıklayın
CREATE TABLE [dbo].[Person] (
[PersonId] INT IDENTITY (1, 1) NOT NULL,
[FirstName] NVARCHAR (200) NULL,
[LastName] NVARCHAR (200) NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([PersonId] ASC)
);
CREATE TABLE [dbo].[PersonInfo] (
[PersonId] INT NOT NULL,
[Email] NVARCHAR (200) NULL,
[Phone] NVARCHAR (50) NULL,
CONSTRAINT [PK_PersonInfo] PRIMARY KEY CLUSTERED ([PersonId] ASC),
CONSTRAINT [FK_Person_PersonInfo] FOREIGN KEY ([PersonId]) REFERENCES [dbo].[Person] ([PersonId]) ON DELETE CASCADE
);
Projeyi Oluşturma
- 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 uygulaması şablonunu seçin.
- Projenin adı olarak MapEntityToTablesSample yazın ve Tamam'a tıklayın.
- İlk bölümde oluşturulan SQL sorgusunu kaydetmek isteyip istemediğiniz sorulursa Hayır'a tıklayın.
Veritabanı'nı temel alan bir 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 MapEntityToTablesModel.edmx yazın ve Ekle'ye tıklayın.
- Model İçeriği Seç iletişim kutusunda Veritabanından oluştur'u seçin ve ardından İleri'ye tıklayın.
- Açılan listeden EntitySplitting bağlantısını seçin ve İleri'ye tıklayın.
- Veritabanı Nesnelerinizi Seçin iletişim kutusunda , Tablolar düğümünü yanındaki kutuyu işaretleyin. Bu, EntitySplitting veritabanındaki tüm tabloları modele ekler.
- Finish (Son) düğmesine tıklayın.
Modelinizi düzenlemek için bir tasarım yüzeyi sağlayan Varlık Tasarımcısı görüntülenir.
Varlığı İki Tabloya Eşleme
Bu adımda, Person ve PersonInfo tablolarındaki verileri birleştirmek için Kişi varlık türünü güncelleştireceğiz.
**PersonInfo **varlığının E-posta ve Telefon özelliklerini seçin ve Ctrl+X tuşlarına basın.
**Kişi **varlığını seçin ve Ctrl+V tuşlarına basın.
Tasarım yüzeyinde PersonInfo varlığını seçin ve klavyede Delete düğmesine basın.
PersonInfo tablosunu modelden kaldırmak isteyip istemediğiniz sorulduğunda Hayır'a tıklayın; bunu Kişi varlığıyla eşlemek üzereyiz.
Sonraki adımlar için Eşleme Ayrıntıları penceresi gereklidir. Bu pencereyi göremiyorsanız tasarım yüzeyine sağ tıklayın ve Eşleme Ayrıntıları'nı seçin.
- Kişi varlık türünü seçin ve < penceresinde Tablo veya Görünüm> Ekle'ye tıklayın.
- Açılan listeden **PersonInfo ** öğesini seçin. Eşleme Ayrıntıları penceresi varsayılan sütun eşlemeleriyle güncelleştirilir, bunlar senaryomuz için uygundur.
Kişi varlık türü artık Person ve PersonInfo tablolarına eşlenir.
Modeli Kullanma
- Aşağıdaki kodu Main yöntemine yapıştırın.
using (var context = new EntitySplittingEntities())
{
var person = new Person
{
FirstName = "John",
LastName = "Doe",
Email = "john@example.com",
Phone = "555-555-5555"
};
context.People.Add(person);
context.SaveChanges();
foreach (var item in context.People)
{
Console.WriteLine(item.FirstName);
}
}
- Uygulamayı derleyin ve çalıştırın.
Bu uygulamanın çalıştırılmasının bir sonucu olarak aşağıdaki T-SQL deyimleri veritabanında yürütüldü.
context.SaveChanges() yürütüldüğünde, aşağıdaki iki INSERT deyimi yürütüldü. Kişiler varlığındaki verileri alır ve Person ve PersonInfo tabloları arasında böler.
Veritabanındaki kişilerin numaralandırıldığı bir sonuç olarak aşağıdaki SELECT yürütüldü. Person ve PersonInfo tablosundaki verileri birleştirir.