ASP.NET ile MySQL ilişkisel veritabanına bağlanarak Entity Model oluşturmak ve Linq ile kullanmak

Linq teknolojisini sadece SQL Server ile değil Mysql Server ile de kullanabiliyoruz. Bu yazımda önce Mysql veritabanında ilişkisel iki adet tablo yaratacağız daha sonra Visual Studio (ya da Express Edition) ile ADO.NET Entity Data Model'ini kullanarak Linq ile veritabanında ilişkisel veritabanı mantığında sorgular çalıştıracağız.

İşe başlamadan önce Mysql veritabanını kurduğunuzu varsayıyorum. Eğer Visual Studio ya Express Edition kurup Mysql sunucusu kurmadıysanız MySQL Community Server 5.1.44 adresinden indirip kurabilirsiniz. 

İlişkisel veritabanı modeli kullanacağımız için tablonun alanlarını buna göre dizayn edeceğiz. İlişkisel veritabanı nedir bilmiyorsanız ilgili yazımı buradan okuyabilirsiniz.

İlk olarak Mysql veritabanında ilişkisel tablolarımızı oluşturacak Sql kodumuzu yazıp çalıştıralım:

CREATE TABLE IF NOT EXISTS takimlar (
  ID int(11) NOT NULL AUTO_INCREMENT,
  Takim_Adi varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  Takim_Teknik_Direktor varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


CREATE TABLE IF NOT EXISTS oyuncular (
  ID int(11) NOT NULL AUTO_INCREMENT,
  Oyuncu_Adi varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  Oyuncu_Takim_ID int(11) NOT NULL,
  PRIMARY KEY (ID),
  KEY Oyuncu_Takim_ID (Oyuncu_Takim_ID),
  FOREIGN KEY (Oyuncu_Takim_ID) REFERENCES takimlar (ID)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

'takimlar' adındaki tabloya takımın ismi ve teknik direktör ismi girilecek. 'oyuncular' adındaki tabloya referens aldığı takımın oyuncuları girilecek. Ben bu tablolara manuel olarak, tek tek, örnek olması için aşağıdaki gibi girdim (tabloları içerecek MySQL veritabanına 'test' adını verdim, siz istediğiniz gibi isimlendirebilirsiniz ) :

takimlar tablosu
takimlar tablosu

takimlar oyuncular
oyuncular tablosu

Şimdi Visual Studio (ya da Express Edition) ile yeni bir web projesi oluşturduktan sonra aşağıdaki adımları izleyelim:

Önemli Not: Eğer ADO.NET Entity Data Model seçeneğini görmüyorsanız VS Service Pack'i indirmemişsiniz demektir. Kurmadıysanız buradan indirip kurabilirsiniz. Ayrıca MySQL veritabanına Visual Studio ya da Express Edition ile bağlanbilmek için MySQL ADO.NET sürücüsüne ihtiyacınız olacak, indirmek için : ADO.NET driver for MySQL


Adım 1
App_Code klasörüne sağ tıklayıp "Add New Item" seçeneğini seçiyoruz .

Adım 2
"ADO.NET Entity Data Model" i seçiyoruz.

Adım 3
Veritabanından modeli direk oluşturmak için "Generate from database" i seçiyoruz.

Adım 4
"New Connection" tuşuna bastıktan sonra Data source'u MySQL Database olarak ayarıyoruz
sonra sunucu ismini ve bağlantı parametrelerini girip bağlantımızı tamamlıyoruz

Adım 5
Sunucuya bağlanırsa yukarıdaki gibi bir sonuç çıkacaktır. Next tuşuna basıp devam ediyoruz.

Adım 6
Burada Data Modeli oluşturulacak tablolaları seçiyoruz. Finish tuşuna basıp Data Entity Model'imizi oluşturuyoruz.

Adım 7
Sonunda ilişkisel modelimizi oluşturduk.  (Test.edmx, testEntities vs.)

App_Code klasöründe Test.edmx ve ona ait code behind dosyası oluşturğunu göreceksiniz. Bu bizim ilişkisel veritabanımızın modelini içeriyor.

Şimdi projemize boş bir .aspx sayfası ekleyip code behind dosyasına aşağıudaki kodu yazalım ve oluşturduğumuz ilişkisel modeli kullanarak Linq sorgularını çalıştıralım. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using testModel; // Modelimizi içeren namespace'imiz

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

        // Tüm modeli içeren testEntities class'ını oluşturuyoruz.
        // Not : testEntities class'ı veritabanı bağlantısını otomatik 
        // olarak gerçekleştirdiğinden bağlantı için ayrı bir statement yazmıyoruz.
        testEntities db = new testEntities();

        // Linq sorgumuzu yazıyoruz. Bu sorguda Takımı Galatasaray
        // olan oyuncuları veritabanından select ediyoruz.
        // Farkındaysanız modelimiz ilişkisel veritabanına göre ayarlandığı için  
        // tabloları birleştirmek için herhangi bir komut eklemedik (join on gibi). 
        var oyuncular = from t in db.takimlar
                        from o in t.oyuncular     
                        where t.Takim_Adi=="Galatasaray"
                        select new { o.Oyuncu_Adi, t.Takim_Adi }                       
                        ;

        // Seçilen her satırı foreach döngüsü ile ekrana bastırıyoruz.
        foreach (var o in oyuncular )
            Response.Write( o.Oyuncu_Adi+","+o.Takim_Adi+"<br/>");
   
    }
}

Dosyayı kaydedip projeyi Run ettikten sonra aşağıdaki gibi bir sonuç alacağız :

Sonuç
Örneğimizi bitirdik. Linq ile ilgili örnekleri buradan bulabilirsiz.
yazan Zülküf Küçüközer tarih   25th February 2010
primary key words  İlişkisel veritabanı | Mysql | Ado.net | Entity data model okunma  25832
secondary key words  Sunucu | Linq | Sorgu | Asp.net
Bu yazı hakkında yorum yapılmamış.