26 Nisan 2017 Çarşamba
Twitter

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.

Değerlendirme

Yazım dilinin sadeliği ve anlaşılabilirliği Puan: 2,65 (4 oy)
Yazıdaki kodların kalitesi Puan: 3,38 (3 oy)
İhtiyaca cevap verme Puan: 3,33 (3 oy)
Tavsiye edilebilirlik Puan: 4,55 (1 oy)
Genel değerlendirme Puan: 3,32 (3 oy)
Puanlamalar 5 üzerindendir.
  • Site Yorumları
  • Facebook Yorumları Facebook Yorumları
Yeni yorum yaz Toplam: 5, Onay bekleyen: 0.
  1. blabla

    peki hocam, MySQL Connecter ü servera da kurmamız gerekiyor mu? sonuçta mysql desteği veren bir hostinge attığımızda çalışmazsa pek bir anlamı kalmaz da?

    • Devrim Altınkurt

      aslında yüklü olması sadece işini kolaylaştırır. eğer serverda yüklü değilse, ilgili dll dosyalarını bin in içerisine atman yeterli. :)
      bkz: C:\Program Files (x86)\MySQL\MySQL Connector Net x.y.z\Assemblies

  2. YOK

    Datamodelde MySql seceneği yok Napmalıyım

    • Devrim Altınkurt

      MySQL Connecter Net yüklemelisiniz

  3. ekrem

    <DbProviderFactories> <clear/> <remove invariant=`MySql.Data.MySqlClient`/> <add name=`MySQL Data Provider` invariant=`MySql.Data.MySqlClient` descr_iption=`.Net Framework Data Provider for MySQL` type=`MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data`/> </DbProviderFactories> bu kısmı anlayamadım. ayrı bir projede dll ile bağlanmayı tercih ediyoruz. şimdi bu bağlantı tercihinin sebebini sormadan geçemeyeceğimz hocam. Bu konuda sizden mümkünse cevap istiyorum. Bu arada linx.me de QR kodundan memnuniyetimi belirtirim. İlerleyen zamandaki bir çalışmamızda bundan faydalanacağız. Elinize sağlık