在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") //
根据ayende?说,是生成的sql效率是一样的,不过原来的blog已经找不到了。
期待看到有用的回答!
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....