Makale Özeti

Bu yazımızda, ASP.Net ile web uygulamalarımızda LİNQ to SQL kullanımını ele alacağız.

Makale

ASP.NET WEB Uygulamalarında LİNQ to SQL Kullanımı

Merhaba değerli arkadaşlar,

Bu yazımızda, ASP.Net ile web uygulamalarımızda LİNQ to SQL kullanımını ele alacağız.

Bu makalenin daha iyi anlaşılabilmesi için LINQ ve LINQ kullanımına bakmanız gerekmektedir. Çünkü LINQ .NET teknolojisinde uygulamalar içinde kullanılarak yazılım geliştiricilerinin kullandığı yazılım dilini oldukça kolaylaştıran bir teknoloji diyebiliriz.İşte bu kolaylıkların başında da Veritabanı işlemleri gelmektedir.LINQ to SQL server işlemlerine dair örnek uygulamamızda bunu hep birlikte göreceğiz.Bunu sağlayan teknik ise ORM tekniğidir.

Yazımızda göstermiş olduğumuz uygulamamız Linq ile Asp.net web uygulaması geliştiren başlangıç seviyesindeki yazılımcı arkadaşlarımıza yol göstermesi amacıyla ele alınmıştır.

Uygulamamızda kullanacağımız bu Linq to Sql,Sql Server ile çalışan bir ORM(Object Relational Mapping) yapısıdır. ORM,yukarda da bahsettiğimiz gibi biz yazılımcılar üzerindeki iş yükünü hafifleten bir teknolojidir.

Uygulamamızı Visual Studio 2010 ile gerçekleştiriyoruz. New Project -->C#-->web -->Empty Asp.Net Project yolunu izleyerek, yeni bir web projesi açıyoruz. Açtığımız uygulamamıza bir .aspx web formunu ekleyelim.Ekleyeceğimiz web formunun adı default.aspx olsun.

NOT:
Uygulamamız, tabloya kayıt ekleme, silme, düzenleme, veri görüntüleme gibi işlemlerin tamamını gerçekleştirmektedir.

Web Projemizi AspNetLinq olarak adlandırdık.

Default.aspx kodlarımız aşağıdaki gibidir.

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
Inherits="AspNetLinq.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <asp:Button ID="btnGoruntule" runat="server" Text="Görüntüle" 
OnClick="btnGoruntule_Click" />

    <asp:Button ID="btnYeniEkle" runat="server" Text="Yeni Ekle" 
OnClick="btnYeniEkle_Click" />

    <table id="tblForm" runat="server">

        <tr>

            <td>Ülke Adı:</td>

            <td><asp:TextBox ID="txtUlkeAdi" runat="server"></asp:TextBox></td>

        </tr>

        <tr>

            <td>Ülke Kodu:</td>

            <td><asp:TextBox ID="txtUlkeKodu" runat="server"></asp:TextBox></td>

        </tr>

        <tr>

            <td colspan="2">

                <asp:Button ID="btnKaydet" runat="server" Text="Ekle" 
OnClick="btnKaydet_Click" />

                <asp:Button ID="btnGuncelle" runat="server" Text="Güncelle" 
OnClick="btnGuncelle_Click" />

                <asp:Button ID="btnIptal" runat="server" Text="İptal" 
OnClick="btnIptal_Click" Width="46px" />

            </td>

        </tr>

    </table>

    <table id="tblGrid" runat="server">

        <tr>

            <td><asp:Label ID="lblID" runat="server" Visible="false"></asp:Label>

                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
OnRowCommand="GridView1_RowCommand">

                    <Columns>

                        <asp:BoundField DataField="UlkeID" HeaderText="ID" />

                        <asp:BoundField DataField="UlkeAdi" HeaderText="Ülke Adı" />

                        <asp:TemplateField>

                            <ItemTemplate>

                                <asp:LinkButton ID="lnkDuzenle" runat="server" 
CommandArgument='<%# Eval("UlkeID")%>'

                                    CommandName="cmdDuzenle" Text="Düzenle"></asp:LinkButton>

                                  --- 

                                <asp:LinkButton ID="lnkSil" runat="server" 
CommandArgument='<%# Eval("UlkeID")%>'

                                    CommandName="cmdSil" Text="Sil">

                                        </asp:LinkButton>

                            </ItemTemplate>

                        </asp:TemplateField>

                    </Columns>

                </asp:GridView>

            </td>

        </tr>

    </table>

   

    </div>

    </form>

</body>

</html>
 

 

Şimdide bu Asp.Net projemize SAĞ tıklayalım. -->Add New Item seçeneğine tıklayıp LINQ to SQL Classes ekleyelim. Aşağıdaki gibi:
 

 

 

 

        
Veritabanımızın programatik tarafındaki modellemesi bu ana nesne ile yapılmaktadır. Daha iyi anlayabilmek adına aşağıdaki görsel ekran görüntülerini inceleyiniz.

Yukardaki ekran çıktısında gördüğünüz gibi oluşturduğumuz LINQ to SQL Classes dosyamızın adı Ulkeler.dbml’dir.

Veritabanımızdan nesne çekebilmemiz ve bu nesnenin modellemisini yapabilmemiz için SQL Server 2008’de oluşturduğumuz tablo şu şekilde olacaktır.

Veritabanımızın adı: Deneme
Tablomuzun adı:  tblUlke

 

 

CREATE TABLE [dbo].[tblUlke](

      [UlkeID] [int] IDENTITY(1,1) NOT NULL,

      [UlkeAdi] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,

      [UlkeKodu] [nvarchar](10)COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,

      [Durum] [nvarchar](10)   COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,

     

 CONSTRAINT [PK_tblUlke] PRIMARY KEY CLUSTERED

(

[UlkeID] ASC

)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]
 

 

 

Nesnemizi ekledikten sonra karşımıza çıkan ORM designer aracı bizlere modellemesini yapacağımız veritabanımızdan nesnelerin seçilmesini sağlayan bir tasarım aracıdır.

Bu işlemlerin hemen ardından şimdi Veritabanımıza bağlanalım. Aşağıdaki ekran görüntüsünü incelediğimizde: Bu yöntemler sırasıyla yapılması gerekmektedir.

Şu adımları takip edelim:
  --> Visual Studio 2010 Server Explorer’da Data Connection üzerine SAĞ Click yapalım ve ardından
  -->Add Connection tıkladıktan sonra karşımıza aşağıdaki gibi bir form gelecektir.

Bu form üzerinde gerekli Server adını yazıyoruz.ve

  • Connect or enter a database name: seçeneğinden Sql Server’da oluşturduğumuz Deneme adlı veritabanımızı seçiyoruz.


 

Seçtiğimiz Veritabanımızı ekledikten sonra aşağıdaki işlemleri uygulamamız lazım. Modelleme yapacağımız tabloyu Object Relational Designer aracına sürükle bırak metoduyla sürükleyip bırakıyoruz. Ve aşağıdaki gibi bir sonuç elde etmemiz gerekir.

Sonrasında ConncetionString’imizi yapılandırmak için Web.Config dosyası içinde aşağıdaki gibi bağlantı cümleciğimizi tanımlıyoruz:


 

ConnectionString tanımladıktan sonra şimdide code behind tarafında C# programlama dili ile yapacağımız işlemleri adım adım gösterelim.

Öncelikle Web uygulamamızın Design’ını göstermekte fayda olacağını düşünüyorum. Zaten Design sayfamıza ait kodlarımız yukarıda mevcuttur:

Code Behind tarafında ilk olarak işlemleri gerçekleştirebilmemiz ve ConnectionString ile veritabanı bağlantımızı gerçekleştirebilmemiz için isim uzaylarını (namespaces) eklememiz gerekmektedir.

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;
 
 

 

 

 

Varsayılanlara ek olarak şu 3 isim uzayını eklemiş olduk:

 

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

 

 

 

 

Linq to Sql Classes vasıtasıyla Ekleme ve Kaydetme işlemini şu şekildeki kodlarımızla gerçekleştiriyoruz:

 

Burada, UlkelerDataContext nesnesi ile ulkeler veritabanı arasında işlem yapılacağı belirtilmektedir. Veritabanına Ülke kaydı ekleneceği için tblUlke türünden bir nesne ile ekleyeceğimiz kayıt oluşturuluyor.tblUlke , veritabanındaki tablonun yazılım tarafına yansıması olduğu için bu nesne türü üzerinden oluşturulacak veriler, tablonun bir satırı olarak düşünülebilir.Kaydedildiğinde veritabanında tblUlke tablosuna bir kayıt olarak eklenecektir.

 

ulkeler.tblUlkes.InsertOnSubmit(ulke);  satırı ile ulkeler nesnesi içerisinde bulunan tblUlke tablosuna kayıt ekleme işlemi gerçekleştiriliyor.Bu ekleme işlemi bellekte olmaktadır.

ulkeler.SubmitChanges(); satırı ise hafızadaki ulkeler nesnesi veritabanına aktarılmaktadır.

 

Ve ardından Gridview’e kaydedilen verilerimizi Görüntüleyebilmemizi sağlayan metodumuzu yazacak olursak:  ViewData() metodu:

 

ViewData() metodumuza ait kodlarımızın hemen ardından,

Düzenle ve Sil metodlarımıza ait kodlarımızı gösteren kod yapısını gösterecek olursak :

 

Eklediğimiz verilerde bir Güncelleme yapmak isteyebiliriz. O zaman Güncelleme metodumuza ait kodlarımız aşağıdaki gibidir:


 

Son olarak tüm metotlarda kullandığımız ortak Metotlarımızı yazalım. Tabii ki Metotlarda kullandığımız bu ortak metotlarımızı sayfa içinde kullanmak zorunlu değildir.

 

Ve gördüğünüz gibi kodlarımız bundan ibaret. Şimdide Web sayfamızda oluşan bir iki ekran görüntüsünü de sizlerle paylaşacak olursak:

Projemizi Çalıştırdıktan sonra açılan Web Sayfamızda ilk olarak à Yeni Ekle tıklıyoruz. Ve tıkladıktan sonra yeni kayıt girişine olanak tanınacağından Yeni Ekle butonu Visible özelliği false olacaktır.

Görüntüle Butonuna tıkladığımızda DataGrid’e aktarılan verilerimiz ise aşağıdaki gibi olacaktır. Daha önceden girdiğimiz birkaç veri mevcuttur.

Veritabanımıza göz attığımızda ise aşağıdaki gibi kaydedildiğini görmekteyiz:

 

Bugünlükte bizden bu kadar diyor ve makalemizin sonuna gelmiş bulunuyoruz. Kafanıza takılan soru işaretleri var ise mail yoluyla sorularınızı iletebilirsiniz.

Yazılım ve Programlama aşkı ile tutuştuğumuz bir sonraki yazımızda görüşmek dileğiyle.

Saygılarımla;

Muhammed ÖNAL
Computer & Embedded Systems Engineer
Copyright © Muhammed ÖNAL , 2012


E-mail

 muhammed.onal23@gmail.com

muhammedonal@hotmail.com.tr

 

 

Facebook

http://www.facebook.com/muhammedhazar.onal/