İçeriğe geç

Dot Net Projesine Framework Database (DB) First Eklemek ve Güncellemek

Merhaba Arkadaşlar,

Yeni makale yazmayalı epey uzun zaman olmuştu farkındayım. Ancak şimdi sizlere dotnet core 3.1 ve tabii daha üstü versiyonlar için database first olacak şekilde entity framework implamantasyonu nasıl yapılır o konuda bir makale ile dönüş yapmak istedim.

Öncelikle şuna bakalım; EntityFramework (EF) için Database First yaklaşımı ne anlama geliyor?

Entity Framework Database First Nedir?

Aslında adından da anlaşılacağı gibi database mimarisinden kodlamaya geçiş yapılan durumlarda kullanılan bir yaklaşımdır. Bağlantı olarak verdiğiniz veritabanından yola çıkarak sizin için EF, tüm sınıfları ve ilişkileri oluşturur ve hazır hale getirir.

Genelde burada akla takılan ilk konu; Sanırım db tasarımının tamamen bitmiş olması gerekir? oluyor. Ancak bu doğru değil. Sizin kod geliştirmeniz devam ederken elbette veritabanı tarafında da gelişmeler, değişiklikler olabilir. Bu durumda db first oluşturma komutunu tekrar çalıştırarak db ile sizin context’inizin eşitlenmesini sağlayabiliyorsunuz.

Veritabanının Oluşturulması

Şimdi gelin aşağıdaki gibi üç tablolu bir veritabanımız olduğunu düşünelim ve bu örnek üzerinden ilerleyelim.

Gördüğünüz gibi basic düzeyde bir araç rezervasyon veritabanı oluşturduk. Üç adet tablomuz var; Araç (Car), Müşteri (Customer) ve Rezervasyon (Reservation) tabloları.

Burada sadece Reservation tablosundaki iki alan diğer tablolarla ilişki halinde.

CustomerId => [Customer].[Id]
CarId => [Car].[Id]

Şimdi bu yapının aynısını gelin bir net core projemize ekleyelim. Tabi bunu bir kaç basit komut ile gerçekleştireceğiz. Toplamda işimiz bir kaç dakikayı geçmeyecek.

Entity Framework Database First İçin Gereken Paketleri Yüklemek

Aşağıdaki gibi boş bir projemiz olsun. Ben tüm modelleri ve context’i EFEntity isminde bir klasörde oluşturarak devam edeceğim. Siz istediğiniz isimle istediğiniz yere oluşturabilirsiniz tabi.

İlk olarak; Tools > NuGate Package Manager > Package Manager Console ‘a tıklayarak Nuget paket yönetici konsolunu açalım. Daha sonra projemize dot net için gerekli olan ef paketlerinin yüklenmesini sağlayalım.

Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1.10

Enter dedikten sonra projemize nuget üzerinden ilgili paketler indirilmiş olacak. Hemen ardından aşağıdaki şekilde sql server paketini de yükleyelim. Böylece sql ile bağlantı kurabileceğiz. Burada kullanacağım versiyon .net 3.1 için 3.1.10 olarak geçiyor. Yazının en altına daha güncel paketler için de sürüm bilgilerini paylaşacağım. Dolayısıyla farklı versiyonlar için sadece son versiyonu değiştirerek devam edebilirsiniz.

Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.10

Şimdi sıra geldi en son işlemimize.

Entity Framework Database First Modelleri Oluşturma

Aşağıdaki komutu kullanarak EFEntity klasörü içerisine modellerimizi oluşturalım.

Scaffold-DbContext "Server=.\SQLEXPRESS;Database=DatabaseAdi;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EFModels

İşte artık projemizin EFEntity dizini aşağıdaki gibi görünüyor.

İşte buradaki EF_DB_FirstContext.cs dosyasına dikkat. Tüm modellerimiz arasındaki ilişki bu tabloda kuruluyor ve tüm EF komutlarını artık bu context ismiyle kullacağız.

Şimdi kısaca bir içeriğine bakalım.

Gördüğünüz gibi tüm veri tipleri artık kullanılabilir durumda. Tüm ilişkiler gelmiş ve modellerimiz de oluşmuş şekilde. Sütun tiplerine kadar 😉

Tabi şimdi son olarak startup.cs dosyasına da aşağıdaki eklemeyi yapalım.

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<EF_DB_FirstContext>(_ => _.UseSqlServer("Server=.\\SQLEXPRESS;Database=DatabaseAdi;Trusted_Connection=True;"));

    services.AddControllersWithViews();
}

İşte create işlemleri buraya kadar. Artık tertemiz bir veritabanımız ve bundan türeyen bir projemiz var.

Entity Framework Database First Modelleri Güncelleme

Bu kısım en basiti. Sadece bir satır komut ile veri tabanımızdaki tüm güncellemelerin projemize yansıdığını göreceksiniz. Önemli Uyarı: Bu komut ile context ve entity modelleri tümüyle yeni haliyle güncellenecektir. Eğer manuel değişiklikleriniz var ise hepsi ezilecektir.

Scaffold-DbContext "Server=.\SQLEXPRESS;Database=DatabaseAdi;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EFModels -force

Entity Framework Paketlerinin Farklı Sürüm Karşılıkları

Net Core 3.1:
Microsoft.EntityFrameworkCore.Tools -Version 3.1.10

Net Core 5.0:
Microsoft.EntityFrameworkCore.SqlServer --version 5.0.0-preview.7.20365.15

Net Core 6.0:
Microsoft.EntityFrameworkCore.SqlServer --version 6.0.0-preview.4.21253.1

Net Core 7.0:
Microsoft.EntityFrameworkCore.SqlServer --version 7.0.5

0 0 votes
Article Rating
Tarih:.Net CoreAnasayfaAsp.NetAsp.Net - C#Asp.Net - MVCEntityFramework
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x