NHibernate 之集合的映射与查询篇
来源:互联网 发布:vb 和校验 编辑:程序博客网 时间:2024/04/30 00:36
题记:
NHibernate: 2.1.2.4000
.net : > fx 2.0
(原文链接 http://ddbiz.com/?p=146)
NHibernate的<map /> 集合映射 可以使用 System.Collections.Generic.IDictionary<TKey, TValue> 来映射。map映射的几个主要部分包括:
集合外键: <map ...> <key column="???" />...</map>
通过 <key column="???" /> 来表明对象关系
索引字段: <map ...> <key ... /> <map-key .../> ...</map>
对应 IDictionary<TKey ...>, 可以使用
值类型 : <map-key /> 或者 <composite-map-key />
引用类型: <map-key-many-to-many />
集合元素: <map ...> <key ... /> <map-key .../> <element ... /> ... </map>
对应 IDictionary<TKey, TValue>, 可以使用
值类型 : <element /> 或 <composite-element />
应用类型: <one-to-many /> 或 <many-to-many /> 等。
【以上内容感谢 李老师文章】
集合元素的查询常用的函数包括:
index()
indiecs()
elements()
maxindex()
minindex()
minelement()
maxelement()
size()
以及 限定词
some, all, exists, any, in
接下来我们通过一个例子来展示查询和相对应的SQL语句是怎样的。
映射文件: msgnotice.hbm.xml
类文件: msgnotice.cs
类文件中的几个属性,有些是 enum定义,此处就省略了定义,读者可以自行填补,如 TMsgNoticeWayType, TMsgNoticeType等。
应用说明: msgnotice 是用来保存一些信息,而这些信息是可以根据定义的 TMsgNoticeWayType的方式,通过不同的渠道发送给接收者,如 SMS短信、及时通信工具、邮件等的。
那么如果我们要查询当前系统中需要发送的邮件信息,如: MsgNoticeList(TMsgNoticeWayType.Email),查询改怎么做呢?
为了使查询结果也能结构化定义,我们另外定义了一个临时类,用于储存MsgNoticeList的返回结果:
如下的查询如:
这个查询生成的SQL语句:
很显然,这不是我们要的结果,而且这个查询的效率可以说十分低下。我们换一种方式看看:
这个查询生成的SQL是这样的:
很好,这才是我们需要的结果:直接通过 noticeways1_.way 来限定我们要的内容。
index(a) 还可以 使用如:
index(a) in (:way1, :way2) 这种方式,生成的SQL语句也就是
where noticeways1_.way in (:way1, :way2)
总结:
index 是从 key 中选择符合条件的key,
indices, 是什么呢?
(原文链接 http://ddbiz.com/?p=146)
- NHibernate 之集合的映射与查询篇
- NHibernate 集合映射基础(第四篇)
- nhibernate学习之简单组合的映射
- nhibernate学习之简单组合的映射
- NHibernate 集合映射深入 (第五篇) <set>,<list>,<map>,<bag>
- NHibernate 数据查询之Linto to NHibernate (第八篇)
- Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)
- nhibernate入门系列 值集合映射
- nhibernate入门系列 值集合映射
- MyBatis映射文件(集合数据的添加与获取,条件查询,模糊查询)
- NHibernate如何实现对象与数据库之间的映射
- NHibernate与MySQL数据库交互(类和表的映射)
- NHibernate 继承映射(第十六篇)
- NHibernate查询之HQL&Criteria
- NHibernate 集合映射基础(第四篇) - 一对一、一对多、多对多小示例
- NHibernate 集合映射基础(第四篇) - 一对一、 一对多、多对多小示例
- NHibernate与Ado.Net查询速度的比较
- 数组与集合的应用之常用集合的使用(Map映射集合实现省市级联选择框)
- Linux as5安装及软raid设置教程
- c#中生成随机密码
- 数据库范式
- ASP—Request
- 分布式计算书籍整理
- NHibernate 之集合的映射与查询篇
- #pragma implementation
- [转载]VIM的列操作与宏录制
- java Spring定时器配置
- RMQ求区间最值问题
- 大伙帮我一起来看看这个数据库的题目
- struts2 标签初识 Ajax Tags 上
- [url=http://www.abab123.com/bbs/down.asp?html=1439338]想学习,目前最好的网站是“视频教程网”[/url]
- Choose Statements--这个命令可对报表的每行进行选择性编辑