Ö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 Tasarım Aracı görüntülenebilir ve düzenlenebilir. Uygulamanızda etkileşimde olduğunuz sınıflar EDMX dosyasından otomatik olarak oluşturulur.

Videoyu izleme

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 Tasarım Aracı görüntülenebilir ve düzenlenebilir. Uygulamanızda etkileşimde olduğunuz sınıflar EDMX dosyasından otomatik olarak oluşturulur.

Sunan: 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 mevcut bir veritabanını hedeflediğiniz zaman zaten oluşturulur, ancak bu kılavuzda erişmek için bir veritabanı oluşturmamız gerekir.

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ğ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

    Select Data Source

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

    Sql Express Connection DF

    LocalDB Connection DF

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

    Create Database Dialog

  • 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ı'ndan Windows'ı 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 Tasarım Aracı kullanacağız.

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

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

  • 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

    Wizard Step 1

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

    Wizard Step 2

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

    Wizard Step 3

 

Tersine mühendislik işlemi tamamlandıktan sonra yeni model projenize eklenir ve Entity Framework Tasarım Aracı'nde 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 Initial

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 Tasarım Aracı 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 Template

 

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.

Generated Classes DF

 

Aşağıda gösterildiği gibi Program.cs dosyasında Main yöntemini 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 Tasarım Aracı modelinizin boş bir noktasına sağ tıklayıp 'Modeli Veritabanından Güncelleştir...' seçeneğini belirlediğinizde Güncelleştirme Sihirbazı başlatılı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.

    Refresh Wizard

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

Özet

Bu kılavuzda, ef Tasarım Aracı 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.