3 min read

Entity Framework Core + MySql

Bu yazı dizisinde MySql kullanarak adım adım EF Core'u tanıyacağız. Peki EF6'dan EF Core'a geçmeli miyiz? Hazır veritabanı üzerinden nasıl proje oluştururuz?
Entity Framework Core + MySql

ORM denince ilk akla gelen araçlardan birisi Entity Framework oluyor. Entity Framework 6'dan sonra 7'nin çıkması beklenirken Microsoft firması EF Core adıyla ORM yaklaşımında büyük bir değişikliğe gidileceğinin sinyalini verdi.

Yalnız Entity Framework Core kullanırken veritabanı olarak MySql kullanacaksanız, önce biraz araştırma ve deneme-yanılma yapmanız gerekiyor.

Şu bir gerçek ki MySql camiası Microsoft'un hızına yetişemediğinden bazı yenilikleri MySql veritabanı ile kullanamıyoruz. Hangi sürümün hangi paketle uyumlu olduğunu takip edip, proje altyapısını ona göre oluşturmamız gerekiyor. Bu konudaki kaynaklar da yetersiz kaldığından bu yazının özellikle yeniliklerden geri kalmak istemeyen MySql kullanıcılarına faydalı olmasını ümit ediyorum. Bu yazı dizisinde MySql kullanarak adım adım EF Core'u tanıyacağız.

1.EF6 mı, EF Core mu kullanmalı?

Öncelikle eğer halihazırda Entity Framework 6 kullanıyorsanız ve proje altyapısı pek bir değişikliğe uğrayacak gibi görünmüyorsa, durduk yere EF Core'a geçmenize gerek yok. EF6 zaten olgunlaşmış bir ürün olarak size yeterli olacaktır. Sadece artık desteklenmeye devam edilmeyeceğini bilmeniz gerekiyor.

Gelişme aşamasında bir proje söz konusu ise o zaman EF Core'u düşünebilirsiniz. Yalnız EF Core'un Entity Framework'e göre biraz daha lightweight / sade olduğunu söyleyebiliriz. Lightweight uygulamalar bildiğiniz gibi çok kapsamlı olmayıp, bazı özellikleri sonradan kendiniz ekleyebileceğiniz şekilde tasarlanıyor. EF Core da bu mantıkla EF6'da bulunan bazı özelliklerin çıkartılarak sadeleşmiş bir yorumudur diyebiliriz. Ama EF6'da olmayıp da, EF Core'da bulabileceğiniz özellikler de mevcut.

Yani eğer EF6'da olup da çok işinize yarayan bir özellik EF Core'da yoksa, geçiş yapmadan önce bir araştırın derim. Gerçekten bu geçişin size kazandırdıkları kaybettiklerinden çok daha fazla olmalı ki emeğinize değsin.

EF6 ve EF Core özelliklerinin tam bir karşılaştırmasını Microsoft'un kendi dokümanlarında bulabilirsiniz.

EF6 ve EF Core karşılaştırın
EF6 ve EF Core arasında seçim yapma kılavuzu.

2.EF Core CLI araçları

Entity Framework Core'u komut satırından kullanabilmek istiyorsanız bunun için CLI araçlarını yüklemeniz gerekiyor. Eğer zaten yüklenmiş durumdaysa aşağıda görüldüğü gibi güncelleme olup olmadığına da bakabilirsiniz.

Versiyon görüntülemek veya kullanım şekillerini tanımak için "dotnet ef" komutuyla bu araçlara göz atabilirsiniz.

3.EF Core + MySql kurulumu için gereken Nuget paketleri

Terminalden EF Core ve MySql kullanımı için gereken Nuget paketlerini indirelim. İlk olarak EF Core 3.1 paketi ekliyoruz.

dotnet add package Microsoft.EntityFrameworkCore --version 3.1.11

Bu yazıda scaffolding yapacağımızdan Design paketi de ekliyoruz.

dotnet add package Microsoft.EntityFrameworkCore.Design --version 3.1.11

Mysql veritabanı için kullanacağınız provider paketinin mutlaka kullandığımız EF Core 3.1 ile uyumlu olması gerekiyor. Bunun için Pomelo paketininin uygun versiyonunu ekliyoruz.

Pomelo yerine MySql.Data paketi de kullanabilirsiniz fakat scaffolding aşamalarında hata alırsınız. Ayrıca Pomelo'nun tercih ettiği mysql connector kütüphanesinin de asenkron işlemleri desteklediğinden daha performanslı olduğunu belirtelim.
dotnet add package Pomelo.EntityFrameworkCore.MySql --version 3.2.4

Son olarak veritabanına bağlanmak için -hazırda yoksa- bir kullanıcı oluşturun.

Devam yazısında kaldığımız yerden EF Core ile Mysql veritabanı kullanımını inceleyeceğiz.