Enterprise Library Kullanarak Veritabanından Veri Çekmek

Eğer bilgisayarınıza Enterprise Library kurduysanız, yaşamınızı kolaylıştıracak özelliklerini de kullanmak isteyeceksenizdir. Bu yazımda EL(Enterprise Library)'yi kullanarak veritabanından veri çekme konusunu ele alacağım.

EL'yi kullanabilbek için öncelikle aşağıdaki referanslarımıza eklememiz gerekiyor.
  • Microsoft.Practices.EnterpriseLibrary.Common
  • Microsoft.Practices.EnterpriseLibrary.Data
  • Microsoft.Practices.EnterpriseLibrary.Data.Configuration.Design

EL'yi yüklediğimiz zaman, web config dosyasını arayüz aracılığıyla ayarlama (config) opsiyonuna sahip oluruz. Bunun için tek yapmamız gereken web.config dosyasını sağ tıklatıp "Edit Enterprise Library Configuration" seçiyoruz.
Karşımıza web.config dosyası üzerinde detaylı global tanımlamarı da yapabileceğimiz arayüz ekranı gelecektir. Bu örneğimizde sadece data konusunu inceleyeceğim. Diğer Application Block tanımlamalarına bu yazımda deyinmeyeceğim. Genelde Data Access Application Block varsayılan (default) olarak tanımlı gelir. Data manipulasyonunda bu block kullanılır. Eğer yok ise projemize yeni bir veritabanına erişim cümleciği eklemek için sağ klik yapıp menüden New > Data Access Application Block seçiyoruz.
Application Block'u tanımladıktan sonra Connection Strings elementini sağ tuşla tıklatarak açılan menüden New > Connection String'i seçiyoruz. Bu sayede web config dosyamıza EL'nin veri tabanına erişim için kullanabileceği bir connection string tanımlamış oluyor.
Tanımladığımız Connection Stringin Ayarlar (Properties) sekmesinde bağlantı detaylarını ayarlamamız gerekmektedir. Provider Name için kullandığınız veritabanına uygun olan bağlantı şeklini seçiniz. Eğer Microsoft SQL Server kullanıyorsanız System.Data.SqlClient seçmemiz gerekmektedir. Connection String propertysini manuel giribileceğimiz gibi bağlantı sihirbazını da kullanabiliriz. Bunun için |...| tıklatınız.
Buradan bağlantı yapacağınız veritabanın bağlantı bilgilerini (server,username,password,database) belirterek Tamam (OK) butonuna basınız. Hepsi bu kadar. Sadece arayüzleri kullanarak veritabanına erişim cümleciğini config dosyamıza ekledik. Bu şekilde birden fazla veritabanı tanımlamasını yapabiliriz. Bu örneğimizde AdventureWorks veritabanını kullandım.
Şimdi ayarlarımızı yapıp EL'nin arayüzünü kapatıp web.config dosyasının içeriğini görüntüleyelim. Böylece eklenen cümleciği görebiliriz. Aşağıda da göreceğiniz üzere arayüz, erişim cümleciğini bizim için hazırlayarak config dosyasına ekledi. name property'sine belirttiğimiz adı kod tarafında veritabanı oluştumak için kullanacağımız için anlamlı bir isimlendirme yapmanızı tavsiye ederim.
Örneğin;yorum VTsi(veritabanı) için DBYorum,puanlama VTsi için DBPuan gibi...
Çektiğimiz veriyi görebilmek için için HTML'ye bir gridview ekledim. Referans kütüphanelerimizi eklemeyi unutmayalım:
  • using Microsoft.Practices.EnterpriseLibrary.Data;
  • using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
  • using System.Data.Common;
Sayfanın açılışında çektiğimiz veriyi göstersin diye Page_Load metodunda veriyi bağladım. Bunun için ayrı bir fonksiyon tanımladım: GetProductsInCategory(int ProductModelID). Basitçe anlatmak gerekirse;ürünün kategorisini alarak ilgili ürünleri getirme işlevine sahip.
using System;
using System.Data;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using System.Data.Common;
using System.Text;
using System.Xml;
namespace Denemeler2008
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            GridView1.DataSource = GetProductsInCategory(3);
            GridView1.DataBind();
        }


        public static DataTable GetProductsInCategory(int ProductModelID)
        {
            Database dbContent = DatabaseFactory.CreateDatabase("ConnectionString");
            DataSet dsData = null;
            DbCommand cmdData = dbContent.GetStoredProcCommand("GetProductsByCategory");
            dbContent.AddInParameter(cmdData, "@ProductModelID", DbType.Int32, ProductModelID);
            dsData = dbContent.ExecuteDataSet(cmdData);
            return dsData.Tables[0];
        }
    }
}

Veriyi çekebilmek için önce bir Database tanımlanmalıdır. Tanımlama esnasında web.config'teki bağlantı cümleceğimizi kullanıyoruz. Stored prosedürünün EL ile birlikte kullanımı örneğimizdeki gibidir. Parametre eklenmesi ve Command'ın tanımlanması sadece 2 satır koddan ibarettir. Ayrıca veriyi direkt dataset olarak okuyabilmekteyiz.

Kodumuzu hatasız yazdıktan sonra veriyi istediğimiz gibi kullanabiliriz. Aşağıdaki sonuç gridview'ının görüntüsü bulunmaktadır.
Benim tavsiyem Database tanımlamalarını global yapmanız. Böylece VT erişiminlerinde tekrar tekrar tanımlayarak performanısın düşmesini önleyebiliriz.
Enterprise Library bize Hata yakalama (Error Handling),Caching,Loglama,Şifreleme için kullanabileceğimiz kullanışlı birçok kod bloğu sunar. Bu yazıda yalnızca Data Application Block'una değindim. EL'nin diğer özellikleri için gelecek yazılarımı bekleyin...

Yorumlar

Bu blogdaki popüler yayınlar

ORA-06502: PL/SQL: sayısal veya değer hatası: karakter dizesi arabelleği çok küçük hatası ve çözümü

Sık Kullanılan Regular Expression'lar

Açılış Sayfalarını web.config Üzerinden Ayarlama