Önce Veritabanı

Bu video ve adım adım izlenecek yol, Entity Framework kullanarak Database First geliştirmesine giriş sağlar. Database First, var olan bir veritabanından modele ters mühendislik uygulamanıza olanak tanır. Model bir EDMX dosyasında (.edmx uzantısı) depolanır ve Entity Framework Designer'da görüntülenebilir ve düzenlenebilir. Uygulamanızda etkileşimde olduğunuz sınıflar EDMX dosyasından otomatik olarak oluşturulur.

Videoyu izleyin

Bu video, Entity Framework kullanarak Database First geliştirmesine giriş niteliğindedir. Database First, var olan bir veritabanından modele ters mühendislik uygulamanıza olanak tanır. Model bir EDMX dosyasında (.edmx uzantısı) depolanır ve Entity Framework Designer'da görüntülenebilir ve düzenlenebilir. Uygulamanızda etkileşimde olduğunuz sınıflar EDMX dosyasından otomatik olarak oluşturulur.

Sunum Yapan: Rowan Miller

Video: WMV | MP4 | WMV (ZIP)

Önkoşullar

Bu kılavuzu tamamlamak için en az Visual Studio 2010 veya Visual Studio 2012 yüklü olmalıdır.

Visual Studio 2010 kullanıyorsanız NuGet'in de yüklü olması gerekir.

 

1. Mevcut Veritabanı Oluşturma

Genellikle hedeflediğiniz mevcut bir veritabanı zaten oluşturulmuş olur, ancak bu rehberde erişmek için bir veritabanı oluşturmamız gerekiyor.

Visual Studio ile yüklenen veritabanı sunucusu, yüklediğiniz Visual Studio sürümüne bağlı olarak farklıdır:

  • Visual Studio 2010 kullanıyorsanız bir SQL Express veritabanı oluşturacaksınız.
  • Visual Studio 2012 kullanıyorsanız bir LocalDB veritabanı oluşturacaksınız.

 

Şimdi veritabanını oluşturalım.

  • 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

    Veri Kaynağı Seç

  • Hangisini yüklediğinize bağlı olarak LocalDB veya SQL Express'e bağlanın ve veritabanı adı olarak DatabaseFirst.Blogging girin

    SQL Express Bağlantısı DF

    LocalDB Bağlantısı DF

  • Tamam'ı seçtiğinizde yeni veritabanı oluşturmak isteyip istemediğiniz sorulur ve Evet'i seçin

    Veritabanı Oluştur İletişim Kutusu

  • Yeni veritabanı artık Sunucu Gezgini'nde görünür, 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

CREATE TABLE [dbo].[Blogs] (
    [BlogId] INT IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (200) NULL,
    [Url]  NVARCHAR (200) NULL,
    CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);

CREATE TABLE [dbo].[Posts] (
    [PostId] INT IDENTITY (1, 1) NOT NULL,
    [Title] NVARCHAR (200) NULL,
    [Content] NTEXT NULL,
    [BlogId] INT NOT NULL,
    CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
    CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);

2. Uygulamayı Oluşturma

İşleri basit tutmak için, veri erişimi gerçekleştirmek için Önce Veritabanı'nı kullanan temel bir konsol uygulaması oluşturacağız:

  • Visual Studio’yu açın
  • Dosya -> Yeni -> Proje...
  • Sol menüden Ve Konsol Uygulaması'ndanWindows'ı seçin
  • Ad olarak DatabaseFirstSample girin
  • Tamam'ı seçin

 

3. Tersine Mühendislik Modeli

Modelimizi oluşturmak için Visual Studio'nun bir parçası olan Entity Framework Designer'ı kullanacağız.

  • Proje -> Yeni Öğe Ekle...

  • Sol menüden Veri'yi seçin ve ardından ADO.NET Varlık Veri Modeli'ni seçin.

  • Ad olarak BloggingModel yazın ve Tamam'a tıklayın

  • Bu işlem Varlık Veri Modeli Sihirbazı'nı başlatır

  • Veritabanından Oluştur'a tıklayın ve İleri'ye tıklayın

    Sihirbaz 1. Adım

  • İlk bölümde oluşturduğunuz veritabanına bağlantıyı seçin, bağlantı dizesinin adı olarak BloggingContext yazın ve İleri'ye tıklayın

    Sihirbaz 2. Adım

  • 'Tablolar' öğesinin yanındaki onay kutusuna tıklayarak tüm tabloları içeri aktarın ve 'Son'a tıklayın

    Sihirbaz 3. Adım

 

Ters mühendislik işlemi tamamlandıktan sonra yeni model projenize eklenir ve Entity Framework Designer'da görüntülemeniz için açılır. Projenize veritabanı için bağlantı ayrıntılarıyla birlikte bir App.config dosyası da eklendi.

Model Başlangıç

Visual Studio 2010'daki Ek Adımlar

Visual Studio 2010'da çalışıyorsanız, Entity Framework'ün en son sürümüne yükseltmek için izlemeniz gereken bazı ek adımlar vardır. Yükseltme, kullanımı çok daha kolay olan gelişmiş bir API yüzeyine ve en son hata düzeltmelerine erişmenizi sağladığından önemlidir.

İlk olarak, Entity Framework'ün en son sürümünü NuGet'ten almalıyız.

  • Proje–> NuGet Paketlerini Yönet...NuGet Paketlerini Yönet... seçeneğiniz yoksa NuGet'in en son sürümünü yüklemeniz gerekir
  • Çevrimiçi sekmesini seçin
  • EntityFramework paketini seçin
  • Yükle'ye tıklayın

Daha sonra, Entity Framework'ün sonraki sürümlerinde kullanıma sunulan DbContext API'sini kullanan kod oluşturmak için modelimizi değiştirmemiz gerekir.

  • EF Designer'da modelinizin boş bir noktasına sağ tıklayın ve Kod Oluşturma Öğesi Ekle... öğesini seçin.

  • Sol menüden Çevrimiçi Şablonlar'ı seçin ve DbContext araması yapın

  • C# için EF 5.x DbContext Oluşturucusunu seçin, ad olarak BloggingModel yazın ve Ekle'ye tıklayın

    DbContext Şablonu

 

4. Veri Okuma ve Yazma

Artık bir modele sahip olduğumuza göre, bazı verilere erişmek için bu modeli kullanma zamanı geldi. Verilere erişmek için kullanacağımız sınıflar, EDMX dosyası temel alınarak sizin için otomatik olarak oluşturulur.

Bu ekran görüntüsü Visual Studio 2012'ye aittir. Visual Studio 2010 kullanıyorsanız BloggingModel.tt ve BloggingModel.Context.tt dosyaları EDMX dosyasının altında iç içe değil doğrudan projenizin altında olur.

Oluşturulan Sınıflar DF

 

Main yöntemini Program.cs dosyasına aşağıda gösterildiği şekilde uygulayın. Bu kod bağlamımızın yeni bir örneğini oluşturur ve ardından bunu kullanarak yeni bir Blog ekler. Ardından, veritabanındaki tüm Blogları Başlığa göre alfabetik olarak sıralanmış olarak almak için bir LINQ sorgusu kullanır.

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Artık uygulamayı çalıştırabilir ve test edebilirsiniz.

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...

 

5. Veritabanı Değişiklikleriyle Ilgilenme

Şimdi veritabanı şemamızda bazı değişiklikler yapma zamanı geldi. Bu değişiklikleri yaptığımızda modelimizi de bu değişiklikleri yansıtacak şekilde güncelleştirmemiz gerekiyor.

İlk adım, veritabanı şemasında bazı değişiklikler yapmaktır. Şemaya bir Users tablosu ekleyeceğiz.

  • Sunucu Gezgini'nde DatabaseFirst.Blogging 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
CREATE TABLE [dbo].[Users]
(
    [Username] NVARCHAR(50) NOT NULL PRIMARY KEY,  
    [DisplayName] NVARCHAR(MAX) NULL
)

Şema güncelleştirildiğinden modeli bu değişikliklerle güncelleştirmenin zamanı geldi.

  • EF Designer'da modelinizin boş bir yerine sağ tıklayın ve 'Modeli Veritabanından Güncelleştir...' seçeneğini belirleyin; bu işlem Güncelleştirme Sihirbazı'nı başlatır

  • Güncelleştirme Sihirbazı'nın Ekle sekmesinde Tablolar'ın yanındaki kutuyu işaretleyin; bu, şemadan yeni tablolar eklemek istediğimizi gösterir. Yenile sekmesi, güncelleştirme sırasında değişiklikler için denetlenecek modeldeki mevcut tabloları gösterir. Sil sekmeleri, şemadan kaldırılmış olan ve güncelleştirmenin bir parçası olarak modelden kaldırılacak tabloları gösterir. Bu iki sekmedeki bilgiler otomatik olarak algılanır ve yalnızca bilgilendirme amacıyla sağlanır, hiçbir ayarı değiştiremezsiniz.

    Yenileme Sihirbazı

  • Güncelleştirme Sihirbazı'nda Son'a tıklayın

 

Model şimdi veritabanına eklediğimiz Kullanıcılar tablosuna eşlenen yeni bir Kullanıcı varlığı içerecek şekilde güncelleştirildi.

Model Güncelleştirildi

Özet

Bu kılavuzda, EF Designer'da mevcut bir veritabanını temel alan bir model oluşturmamıza olanak tanıyan Database First geliştirmesine göz attık. Ardından bu modeli veritabanından bazı verileri okumak ve yazmak için kullandık. Son olarak, modeli veritabanı şemasında yaptığımız değişiklikleri yansıtacak şekilde güncelleştirdik.