FluentNHibernate – Nhibernate Giris -2

Mapping işlemlerinden ve SessionFactory Create ettikten sonra artık örnek sorguları oluşturabilirsiniz

Nhibernate le alakalı örnek sorgular

1-)Select All

var session = NHibernateHelper.OpenSession();

IList<Person> ab = session.CreateCriteria(typeof(Person)).List<Person>();

2-) ID vererek bir listedeki tek kaydı çekme

var session = NHibernateHelper.OpenSession();

PersonType pt=session.Load<PersonType>(1);

3-)Insert

using (var session = NHibernateHelper.OpenSession())

{

using (var transaction = session.BeginTransaction())

{

var newPerson = new Person

{

Name = “abc4″,

PersonTypeID = 3

};

session.Save(newPerson);

transaction.Commit();

}

}

4-)Update

using (var session = NHibernateHelper.OpenSession())

{

using (var transaction = session.BeginTransaction())

{

var newPerson = new Person

{

ID = 5,

Name = “abc88″,

PersonTypeID = 3

};

session.Update(newPerson);

transaction.Commit();

}

}

5-)Insert or Update — > SaveOrUpdate bu kodda eğer ID verirseniz güncelleme yapar,ID verilmez ise direkt olarak insert yapar.Ancak ID niz otomatik artansa ve o ID ait kayıt yoksa bu kod size hata fırlatır.

using (var session = NHibernateHelper.OpenSession())

{

using (var transaction = session.BeginTransaction())

{

var newPerson = new Person

{

// ID = 5,

Name = “abc78″,

PersonTypeID = 3

};

session.SaveOrUpdate(newPerson);//session.Update(newPerson);

transaction.Commit();

}

}

6-)Select Top sorgu sonucu maximum istenen kayıt sayısı

var session = NHibernateHelper.OpenSession();

ICriteria crit = session.CreateCriteria(typeof(Person));

crit.SetMaxResults(1);

IList mylist = crit.List();

7-)Distinct

Distinct Metod 1

var session = NHibernateHelper.OpenSession();

IList mylist = session.CreateCriteria(typeof(Person)).SetProjection(Projections.Distinct(Projections.Property(“Name”))).List();

Distinct Metod 2

ICriteria criteria

= session.CreateCriteria(typeof(Person));

criteria.SetProjection(Projections.Distinct(Projections.ProjectionList().

Add(Projections.Alias(Projections.Property(“Name”), “Name”)).

Add(Projections.Alias(Projections.Property(“PersonTypeID”), “PersonTypeID”))));

criteria.SetResultTransformer(new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Person)));

IList people = criteria.List();

8-)Order By

var session = NHibernateHelper.OpenSession();

IList mylist = session.CreateCriteria(typeof(Person)).AddOrder(Order.Desc(“ID”)).List();

9-)Inner Join

var session = NHibernateHelper.OpenSession();

IList mylist = session.CreateCriteria(typeof(Person)).CreateAlias(“PersonTypes”, “PersonType”, NHibernate.SqlCommand.JoinType.InnerJoin).List();

10-)Aggerate Fonksiyonlaràavg,max,min vs…

var session = NHibernateHelper.OpenSession();

IList mylist = session.CreateCriteria(typeof(Person)).SetProjection(Projections.Avg(“ID”)).List();

11-)Sorgularımıza where koşulu ekleme örnek Nhibernate ile in , eq ,like vs…

Expression kullanarak Filtre

var session = NHibernateHelper.OpenSession();

IList mylist = session.CreateCriteria(typeof(Person))

/*In sorgusu*/

//   .Add(Expression.In(“ID”, new int[] { 1, 2 })).List();

/*Eşittir*/

// .Add(Expression.Eq(“ID”, 1)).List();

/*Like*/

.Add(Expression.Like(“Name”,”abx%”)).List();

Restriction kullanarak Filtre yapmak

var session = NHibernateHelper.OpenSession();

IList mylist = session.CreateCriteria(typeof(Person))

.Add(Restrictions.Eq(“ID”, 1)).List();

Not :Restriction ve Expression birbirlerine benzer ancak expression daha fazla depreciated metoddur.Tavsiye edilen Restriction kullanımıdır.

12-)CreateAlias ve CreateCriteria:İkisi arasında temelde fark yoktur.Tek fark CreateCriteriada daha fazla overload şansınız vardır.

IList mylist = session.CreateCriteria(typeof(Person)).CreateCriteria(“PersonTypes”, “PersonType”, NHibernate.SqlCommand.JoinType.InnerJoin).List();

IList mylist2 = session.CreateCriteria(typeof(Person)).CreateAlias(“PersonTypes”, “PersonType”, NHibernate.SqlCommand.JoinType.InnerJoin).List();

13-)Nhibernate içine direkt olarak Sql kodu koyabilmek

var session = NHibernateHelper.OpenSession();

session.CreateSQLQuery(“select * from PersonType p”).List();

14-)HSQL: Nhibernate criteria ile yapılabilen sorgulama hsql ile yapılabilir.Ancak nhibernate forumlarında hsql daha esnek olduğu yönündedir

var session = NHibernateHelper.OpenSession();

int count= Convert.ToInt32(session.CreateQuery(“select Count(*) from PersonType”).UniqueResult()); /

//HSQL içine parametre koymak

var blogs = session.CreateQuery(“from PersonType p where p.ID = :ID”)

.SetParameter(“ID”, “1”).List();

IQuery query = session.CreateQuery(“FROM PersonType”);

IList<PersonType> pers = query.List<PersonType>();

15-)Nhibernate de Lamda Expression ve Linq kullanım örneği

Linq kullanabilmek için Nhibernate.Linq namespaceini eklememiz gerekmektedir

var session = NHibernateHelper.OpenSession();

Lamda Expression

// PersonType p = session.QueryOver<PersonType>().Where(px => px.ID==1).SingleOrDefault();

PersonType p2 = session.Query<PersonType>().Where(px => px.ID == 1).SingleOrDefault();

Linq Örneği

var BuildQuery1=(from p in session.QueryOver<PersonType>() where p.ID==1 select p).List();

var BuildQuery = (from p in session.Query<PersonType>() where p.ID == 1 select p).ToList();

Bu yazı .NET kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>