MySQL ile Entity Framework'ü kullanmak

Bu yazımızda MySQL ile EF kullanımını inceleyeceğiz.

Aslına bakarsanız, SQL Server'la EF'yi nasıl kullanıyorsak, MySQL'de çok da farklı bir işlem yapmıyoruz. Aralarındaki en belirgin fark, SQL Server desteği zaten .NET Framework ile geliyor, MySQL desteğini ise bizim dışardan sağlamamız gerekiyor.

Öncelikle eğer hala sisteminize MySQL .NET Connector'ü yüklemediyseniz buradan yükleyin. .NET Connector olmadan MySQL ile Entity Framework'ü kullanamazsınız.

Yalnız dikkat etmeniz gereken bir husus var. Kullandığınız MySQL versiyonu ile .NET Connector versiyonu uyumlu olmalıdır. Uyum tablosunu buradaki PDF dosyasından inceleyebilirsiniz. (MySQL Connector/Net Developer's Guide, Sayfa 4)

Neyse, biz konumuza devam edelim. Yapmanız gereken bir diğer işlem, MySql.Data ve MySql.Data.Entity dll'lerini projenize refere etmek.

Bu DLL'leri nereden bulacağız diye soruyorsanız, MySQL .NET Connector'ünü bilgisayarınıza kurduktan sonra C:\Program Files\MySQL\MySQL Connector Net X.X.X\Assemblies klasörüne göz atın. Bu klasörde ilgili DLL'leri bulacaksınız.

Şimdi örnek bir ADO.NET Entity Data Model oluşturalım:

Bunları da yaptıktan sonra atık LINQ ve Entity Framework ile MySQL veritabımızı kullanmaya başlayabiliriz.

Örnek bir sorgu çalıştıralım:

TestEntities db = new TestEntities();
var data = from t in db.my_aspnet_users
                        where t.applicationId == 1
                        select t;

Localde çalışıyor ama server ınıza attığınızda aşağıdaki hatayı alırsanız yapmanız gereken bir ufak işlem daha var.

web.config dosyanızı açın, 

şu satırları system.data tagları arasına yerleştirin:

<system.data>
    <DbProviderFactories>
      <clear/>
      <remove invariant="MySql.Data.MySqlClient"/>      
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" 
description=".Net Framework Data Provider for MySQL" 
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"/>
    </DbProviderFactories>
  </system.data>

Geçmiş olsun :)

İlgili linkler:

Not:

"Entity Framework Schema specified is not valid hatası çözümü" başlıklı yazım ilginizi çekecektir.