Daha önceki Fluent NHibernate makalelerinde database' e nasıl bağlantı kurulacağı ve tablo objelerinin nasıl oluşturulacağı ile ilgili çalışma yapmıştık. Şimdi database üzerinde bulunan veriye nasıl ulaşabiliriz bu konu ile ilgili örnekleme yapacağız. Örnekte kullanmış olduğum tablo objesi aşağıdaki gibidir.
public class Personel { public virtual int PersonelId { get; set; } public virtual string Ad { get; set; } public virtual string Soyad { get; set; } public virtual PersonelDurum Durum { get; set; } } public class PersonelMap : ClassMap< Personel> { public PersonelMap() { Table("Personeller"); Id(x => x.PersonelId); Map(x => x.Ad); Map(x=> x.Soyad ); Map(x => x.Durum).CustomType(typeof(PersonelDurum)); } } public enum PersonelDurum : byte { Ayrildi = 0, Calisiyor = 1 }
Yukarıda bulunan objeye karşılık gelen tablonun içeriği aşağıdaki gibidir.
Şimdi Fluent NHibernate ile select çekelim.
using (var session = NHibernateHelper.OpenSession()) { var data = session.QueryOver< Personel>().List(); }
Bu şekilde yazılan bir sorgu ile tüm kayıtlar listelenmektedir.
Eğer tüm kayıtların listelenmesini istemiyorsak aşağıdaki gibi kriter belirtebiliriz.
using (var session = NHibernateHelper.OpenSession()) { var data = session.QueryOver< Personel>() .Where(x => x.Durum == PersonelDurum.Calisiyor) .List(); }
Personel durumu ile birlikte Ad alanınada bir kriter yazalım. Sadece adı Ali olan kayıtlar listelensin.
using (var session = NHibernateHelper.OpenSession()) { var data = session.QueryOver< Personel>() .Where(x => x.Durum == PersonelDurum.Calisiyor) .And(x => x.Ad == "Ali") .List(); }
Örneklerde basit sorgu kriterleri kullandım. Yapılacak işleme göre istenilen sayıda kriter kullanabilirsiniz. Basit anlamda select işlemleri bu şekilde yapılmaktadır. İhtiyaca göre daha ileri seviye işlemlerin yapılması mümkündür.
Başarılar dilerim.