CreateAlias 与 CreateCriteria的区别
在NHibernate里面查很常用。CreateAlias 返回值还是当前的Criteria,但是CreateCriteria返回的新的Criteria。
基本用法 如下。
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") //