-- ADO.NET, DevExpress, XPO

XPO(eXpress Persistent Objects) ile SQL Komutları Çalıştırma

Profesyonel iş hayatında, uygulama geliştirmek için ana geliştirici firmaların(Microsoft, Oracle, Apple vb.) haricinde 3. Parti(Third-Party) dediğimiz çeşitli araç ve ara katman mimarileri geliştiren firmalarda mevcuttur. Bu makalemde DevExpress firmasının geliştirdiği bir ORM yapısı olan eXpress Persistent Objects(XPO) ile ilgili temel giriş niteliğinde bir anlatım yapacağım.

XPO ile ilgili mimari anlatımları zaman bulduğumda ayrı bir makalede yazmayı planlıyorum.

XPO mimarisi temel olarak Microsoft’un Entity Framework Code First mimarisiyle benzemektedir. Ancak, geliştirme esnekliği açısından ADO.NET Connected mimarisini de desteklemektedir. ADO.NET Connected mimarisiyle ilgili bilgi edinmek için tıklayınız.

Bir konsol uygulaması açarak projemize başlayalım. Bu makalede Visual Studio 2010 kullanarak anlatım yapacağım.

1

Konsol uygulamasını açtığınızda aşağıdaki gibi bir Console Server Application oluşacaktır.

2

Bu kodların üstünde ve altında bir kaç satır daha kod bulunuyor. Bunları seçerek açıklama satırı yapabilir ya da silebilirsiniz. Biz kendi yapımızı oluşturacağız.

Bu ufak temizlikten sonra Main() metodu içerisine aşağıdaki kodları yazalım.

using (UnitOfWork uow = new UnitOfWork())
{                
     // veritabanı işlemlerini burada yapacağız.
}

Önemli : UnitOfWork’ü projenizde kullanabilmek için using bloğunda DevExress.Xpo namespace’ini tanımlamalısınız.

using DevExpress.Xpo;

UnitOfWork nesnesi XPO için can alıcı noktadır. Özetle, XPO ile veritabanı işlemi yapmak için UnitOfWork ve Session nesneleri kullanılır. Biz de using bloğu içerisinde UnitOfWork nesnesi oluşturuyoruz.

Bu projeyi oluşturduğunuzda App.Config dosyası içerisinde otomatik olarak bir ConnectionString nesnesi tanımlanmış olacaktır. Biz .CS kodları içerisinde yeni bir ConnectionString tanımlayarak bunu kullanıyoruz.

using (UnitOfWork uow = new UnitOfWork())
{                
     uow.ConnectionString = @"Data Source=.;Initial Catalog=Northwind;Integrated Security=SSPI";

     // veritabanı işlemlerini burada yapacağız.
}

Artık veritabanını XPO ile sorgulamaya geçebiliriz.

– Northwind veritabanında kaç adet ürün olduğunu hesaplayalım.

Bu işlem klasik ADO.NET Connected mimarisinde ExecuteScalar() metodu ile yapılmaktaydı. Burada da aynı isimde olan metodu kullanacağız.

ConnectionString tanımlamamızın hemen altına aşağıdaki kodu yerleştirelim.

int urunToplam = (int)uow.ExecuteScalar("SELECT COUNT(ProductID) FROM Products");
Console.WriteLine("Ürün Toplamı : " + urunToplam);

Sonuç;

3

– Northwind veritabanında EmployeeID değeri 5’e eşit ve 5’den küçük olan çalışanların EmployeeID, FirstName ve LastName bilgilerini listeleyelim.

SelectedData selectedData = uow.ExecuteQuery("SELECT EmployeeID, FirstName, LastName FROM Employees WHERE EmployeeID <= 5");
                foreach (var result in selectedData.ResultSet)
                {
                    foreach (var row in result.Rows)
                    {
                        Console.WriteLine(row.Values[0] + " - " + row.Values[1] + " " + row.Values[2]);
                    }
                }

Önemli : Yukarıdaki kodları yazdığınızda SelectedData nesnesinin kullanılamadığını göreceksiniz. Bu nesneyi kullanabilmek için DevExpress.Data isimli DLL’i projenize eklemeli ve using bloğuna da DevExpress.Xpo.DB tanımlamasını yapmalısınız.

4

Şimdi veri çekmek için hazırız. Uygulamayı çalıştırdığınızda aşağıdaki gibi bir sonuçla karşılaşacağız.

5

Gördüğünüz gibi gayet kolay bir şekilde sorgulama yapabiliyoruz. Hatırlarsanız ADO.NET Connected mimarisinde UPDATE ve DELETE işlemleri için ExecuteNonQuery() metodu kullanılıyordu. XPO’da da aynı şekilde bu isimdeki metod kullanılır.

UPDATE

int etkilenenSatirSayisi = uow.ExecuteNonQuery("UPDATE sorgusu...";
Console.WriteLine("etkilenen satır sayısı" + etkilenenSatirSayisi);

DELETE

int silinenKayitSayi = (int)uow.ExecuteNonQuery("DELETE FROM Kullanicilar WHERE KullaniciID = 1");
Console.WriteLine("Silinen Kayıt Sayısı : " + silinenKayitSayi);

XPO ile Connected işlemler mimari olarak bu kadar basittir.

İyi çalışmalar.
Cihan Özhan

Yorumla

Yorum

  1. Merhaba Hocam; her iki konuda bir birinden güzel ve özel bu konu hakkında derinlemesine türkçe kaynak yok 🙁 yayınladığınızda mükemmel olacaktır, şimdiden beklemedeyim ve takipçinizim:) çalışmalarınızda başarılar.