Mapping işlemlerinden ve SessionFactory Create ettikten sonra artık örnek sorguları oluşturabilirsiniz
Nhibernate le alakalı örnek sorgular
1-)Select All
Kod:
var session = NHibernateHelper.OpenSession();
IList<Person> ab = session.CreateCriteria(typeof(Person)).List<Person>();
2-) ID vererek bir listedeki tek kaydı çekme
Kod:
var session = NHibernateHelper.OpenSession();
PersonType pt=session.Load<PersonType>(1);
3-)Insert
Kod:
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
Kod:
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.
Kod:
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ı
Kod:
var session = NHibernateHelper.OpenSession();
ICriteria crit = session.CreateCriteria(typeof(Person));
crit.SetMaxResults(1);
IList mylist = crit.List();
7-)Distinct
Distinct Metod 1
Kod:
var session = NHibernateHelper.OpenSession();
IList mylist = session.CreateCriteria(typeof(Person)).SetProjection(Projections.Distinct(Projections.Property("Name"))).List();
Distinct Metod 2
Kod:
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
Kod:
var session = NHibernateHelper.OpenSession();
IList mylist = session.CreateCriteria(typeof(Person)).AddOrder(Order.Desc("ID")).List();
9-)Inner Join
Kod:
var session = NHibernateHelper.OpenSession();
IList mylist = session.CreateCriteria(typeof(Person)).CreateAlias("PersonTypes", "PersonType", NHibernate.SqlCommand.JoinType.InnerJoin).List();
10-)Aggerate Fonksiyonlaravg,max,min vs...
Kod:
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
Kod:
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.
Kod:
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
Kod:
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
Kod:
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
Kod:
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
Kod:
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();