CreateAlias 与 CreateCriteria的区别

   在NHibernate里面查很常用。CreateAlias 返回值还是当前的Criteria,但是CreateCriteria返回的新的Criteria。

 

Main

 

基本用法 如下。

var cri = session.CreateCrieria(typeof(User)) 

       .CreateCriteria("Roles") 

       .Add(Restrictions.Eq("RoleName","admin");





var cri = session.CreateCrieria(typeof(User)) 

       .CreateAlias("Roles","role") 

       .Add(Restrictions.Eq("role.RoleName","admin");
 
现在我除了想查role是admin的用户外,也想查出UserName名字叫做Joe的用户,那么他们就有区别
 
var cri = session.CreateCrieria(typeof(User))

       .Add(Restrictions.Eq("UserName", "Joe")

       .CreateCriteria("Roles") 

       .Add(Restrictions.Eq("RoleName","admin");



//第一种写法

var cri = session.CreateCrieria(typeof(User))

       .Add(Restrictions.Eq("UserName", "Joe") //紧贴着User

       .CreateAlias("Roles","role") 

       .Add(Restrictions.Eq("role.RoleName","admin"); 

//第二种写法。

var cri = session.CreateCrieria(typeof(User))

       .CreateCriteria("Roles") 

       .Add(Restrictions.Eq("RoleName","admin");

       .Add(Restrictions.Eq("UserName", "Joe") //



根据 ayende 说,是生成的sql效率是一样的,不过原来的blog已经找不到了。

你可能感兴趣的:(Criteria)