Database First yaklaşımını temel olarak var olan bir veri tabanıyla çalışmak olarak tanımlayabiliriz.
Bu yaklaşımda, var olan bir veri tabanından bir modele tersine mühendislik uygulayarak, model tanımını ve eşleme bilgilerini içeren bir EDMX dosyasının oluşturulmasını sağlarsınız.
Şimdi birlikte bir örnek yapalım Microsoft’un bize eğitim amacıyla verdiği Northwind db üzerinden bir model oluşturalım.
NOT: Bu konu başlığı Entity Framework Core için geçerli değildir. Standart .NET Framework projelerinde uygulanabilir. Çünkü .NET Core ile birlikte “EDMX” veri modeli tasarımcılarını kullanmaz, Entity Framework Core tamamen kod önceliklidir.
https://learn.microsoft.com/tr-tr/dotnet/framework/data/adonet/sql/linq/downloading-sample-databases
Northwind Database hakkında detaylı bilgi için yukarıda ki linki kullanarak learn-microsoft’u ziyaret edebilirsiniz.
NOT: Aşağıda ki işlemlerden önce “EntityFramework” paketini NuGet üzerinden yüklemeniz gerekmektedir.
BAKINIZ: https://alkanfatih.com/nuget-ile-entity-framework-core-yukleme/
Database First Model Kurulumu
1 – DatabaseFirstDemo adıyla yeni bir konsol projesi (Console App (.NET Framework)) oluşturalım.
2 – Database First Modeli oluşturmak için önce Solution Explorer’da console projenize sağ tıklayın ve Add (Ekle) → New Item (Yeni Öğeler)‘i seçin.
3 – Orta bölmeden ADO.NET Entity Data Model’i seçin ve Name: alanına DatabaseFirstModel gibi bir isim girin.
4 – Entity Data Model Wizard penceresinden EF Designer from database kutusunu seçin ve Ekle düğmesine tıklayın.
6 – Mevcut veritabanını seçin ve İleri’ye tıklayın.
7 – Güncel Entity Framework’ü seçin ve ileri’ye tıklayın.
8 – Dahil etmek istediğiniz tüm tabloları seçin ve Fınısh’e tıklayın.
Entity modelinin ve sınıflarının veri tabanından oluşturulduğunu göreceksiniz.
Şimdi program.cs dosyası içinde veri tabanımızın Employees tablosu üzerinde CRUD (Create – Read – Update – Delete) işlemleri yapalım.
internal class Program
{
static void Main(string[] args)
{
Select();
Add();
Update();
Remove();
Console.Read();
}
private static void Select()
{
NorthwindEntities db = new NorthwindEntities();
var employees = db.Employees.ToList();
foreach ( var emp in employees )
{
Console.WriteLine($"ID: {emp.EmployeeID} Name: {emp.FirstName} Last Name: {emp.LastName}");
}
Console.WriteLine("*********************\n");
}
private static void Add()
{
NorthwindEntities db = new NorthwindEntities();
Employees newEmployees = new Employees();
newEmployees.FirstName = "Fatih";
newEmployees.LastName = "Alkan";
db.Employees.Add(newEmployees);
db.SaveChanges();
Select();
}
private static void Update()
{
NorthwindEntities db = new NorthwindEntities();
Employees employee = db.Employees.First(x => x.LastName == "Alkan");
employee.LastName = "ALKAN";
db.SaveChanges();
Select();
}
private static void Remove()
{
NorthwindEntities db = new NorthwindEntities();
Employees removeEmployee = db.Employees.First(x => x.LastName == "ALKAN");
db.Employees.Remove(removeEmployee);
db.SaveChanges();
Select();
}
}
Sonuç
ID: 1 Name: Nancy Last Name: Davolio
ID: 2 Name: Andrew Last Name: Fuller
ID: 3 Name: Janet Last Name: Leverling
ID: 4 Name: Margaret Last Name: Peacock
ID: 5 Name: Steven Last Name: Buchanan
ID: 6 Name: Michael Last Name: Suyama
ID: 7 Name: Robert Last Name: King
ID: 8 Name: Laura Last Name: Callahan
ID: 9 Name: Anne Last Name: Dodsworth
*********************
ID: 1 Name: Nancy Last Name: Davolio
ID: 2 Name: Andrew Last Name: Fuller
ID: 3 Name: Janet Last Name: Leverling
ID: 4 Name: Margaret Last Name: Peacock
ID: 5 Name: Steven Last Name: Buchanan
ID: 6 Name: Michael Last Name: Suyama
ID: 7 Name: Robert Last Name: King
ID: 8 Name: Laura Last Name: Callahan
ID: 9 Name: Anne Last Name: Dodsworth
ID: 10 Name: Fatih Last Name: Alkan
*********************
ID: 1 Name: Nancy Last Name: Davolio
ID: 2 Name: Andrew Last Name: Fuller
ID: 3 Name: Janet Last Name: Leverling
ID: 4 Name: Margaret Last Name: Peacock
ID: 5 Name: Steven Last Name: Buchanan
ID: 6 Name: Michael Last Name: Suyama
ID: 7 Name: Robert Last Name: King
ID: 8 Name: Laura Last Name: Callahan
ID: 9 Name: Anne Last Name: Dodsworth
ID: 10 Name: Fatih Last Name: ALKAN
*********************
ID: 1 Name: Nancy Last Name: Davolio
ID: 2 Name: Andrew Last Name: Fuller
ID: 3 Name: Janet Last Name: Leverling
ID: 4 Name: Margaret Last Name: Peacock
ID: 5 Name: Steven Last Name: Buchanan
ID: 6 Name: Michael Last Name: Suyama
ID: 7 Name: Robert Last Name: King
ID: 8 Name: Laura Last Name: Callahan
ID: 9 Name: Anne Last Name: Dodsworth
*********************