CreateAlias 与 CreateCriteria的区别
来源:互联网 发布:c语言的函数 编辑:程序博客网 时间:2024/04/28 07:07
NHibernate.Criterion方法解释
HQL运算符
QBC运算符
含义
=
Restrictions.eq()
等于equal
<>
Restrictions.ne()
不等于not equal
>
Restrictions.gt()
大于greater than
>=
Restrictions.ge()
大于等于greater than or equal
<
Restrictions.lt()
小于less than
<=
Restrictions.le()
小于等于less than or equal
is null
Restrictions.isnull()
等于空值
is not null
Restrictions.isNotNull()
非空值
like
Restrictions.like()
字符串模式匹配
and
Restrictions.and()
逻辑与
and
Restrictions.conjunction()
逻辑与
or
Restrictions.or()
逻辑或
or
Restrictions.disjunction()
逻辑或
not
Restrictions.not()
逻辑非
in(列表)
Restrictions.in()
等于列表中的某一个值
not in(列表)
Restrictions.not(Restrictions.in())
不等于列表中任意一个值
between x and y
Restrictions.between()
闭区间xy中的任意值
not between x and y
Restrictions.not(Restrictions..between())
小于值X或者大于值y
ICriteria criteria = this.Session.CreateCriteria<CpCourse>()
.CreateAlias(CpCourse._Organizations, "o")//表示CoOrganization实体和CpCourse实体做关联
//.Add(Expression.Eq("o." + CoOrganization._Address, "456"));//可以根据别名再配置条件,该条件也可以写在
下面任意位置
.GetCriteriaByAlias("o")//表示跳到CoOrganization实体,如果不写表示还在CpCourse实体
.CreateAlias(CoOrganization._Users, "u")//表示CoUser实体和CoOrganization实体进行关联
.Add(Expression.Eq("u." + CoUser._UserName, "zhuangyq"));
//.Add(Expression.Eq("o." + CoOrganization._Address, "456"));//如这个位置
IList<CpCourse> list = criteria.List<CpCourse>();
以下结果集同上面写法
ICriteria criteria = this.Session.CreateCriteria<CpCourse>()
.CreateCriteria(CpCourse._Organizations)//表示到达CoOrganization实体,与CpCourse实体关联
//.Add(Expression.Eq(CoOrganization._Address, "456"))//条件必须紧跟CoOrganization实体后面
.CreateCriteria(CoOrganization._Users)//表示到达CoUser实体,与CoOrganization实体关联
.Add(Expression.Eq(CoUser._UserName, "zhuangyq"));"))//条件必须紧跟CoUser实体后面
IList<CpCourse> list = criteria.List<CpCourse>();
CreateCriteria表示到达该实体,再与.CreateAlias或.CreateCriteria的后面的实体与该实体进行关联。
关于CreateCriteria实体的条件必须紧跟CreateCriteria的实体其后。
CreateAlias创建表别名的方式,只要在这个表的别名创建之后都可以再进行条件的添加(条件必须包含别名)
或者使用GetCriteriaByAlias方法达到该包含别名的实体后继续操作再进行.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)) .CreateAlias("Roles","role") .Add(Restrictions.Eq("role.RoleName","admin"); .Add(Restrictions.Eq("UserName", "Joe") //前后都没有关系,贴着role也可以。
- CreateAlias 与 CreateCriteria的区别
- CreateAlias 与 CreateCriteria的区别
- CreateAlias 与 CreateCriteria的区别
- CreateAlias 和 CreateCriteria 的区别
- Criteria.createAlias与createCriteria使用区别
- createQuery与createCriteria的用法及区别
- mybatis createcriteria和or的区别
- createAlias的第三个参数
- createCriteria 的用发总结
- Hibernate中createCriteria即QBC查询的详细用法和HQL的区别?
- DetachedCriteria的createCriteria(String associationPath,String alias)方法有bug
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- 开启设计之门 设计基础教程之构图篇
- linux sort 设定tab分隔符
- AAuto - 抓取网页新闻
- C++primer第五版【学习笔记】——第一章
- 古代父母对孩子“七不责” 精髓
- CreateAlias 与 CreateCriteria的区别
- 揭秘谷歌“神秘”的招聘机制
- Java的堆栈分析
- error: forming reference to void
- 面试70问经典回答技巧
- Linux 网络模拟工具
- 人生积淀
- Linux下的多线程编程
- Android SDK4.0.3及以上版本支持intel x86模拟器