Aracılığıyla paylaş


varlık bölmeyi Tasarım Aracı

Bu izlenecek yol, Entity Framework Tasarım Aracı (EF Tasarım Aracı) ile bir modeli değiştirerek bir varlık türünü iki tabloya eşlemeyi gösterir. 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 Tasarım Aracı ile çalışırken kullanılan ana pencereler gösterilmektedir.

EF Designer

Ön koş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ğlan ions -> Bağlan 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
  • 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 -> İşlem SQL Düzenleyicisi -> Yeni Sorgu Bağlan... öğ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'da 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 Entity Tasarım Aracı 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.

    Delete Tables

Sonraki adımlar Için Eşleme Ayrıntıları penceresi gerekir. 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 Eşleme Ayrıntıları 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.

Mapping 2

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ü. 

  • Bağlam yürütülürken aşağıdaki iki INSERT deyimi yürütüldü. SaveChanges(). Kişiler varlığındaki verileri alır ve Person ve PersonInfo tabloları arasında böler.

    Insert 1

    Insert 2

  • 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.

    Select Combining Person and PersonInfo Data