终于解决了NHibernate的排序问题
来源:互联网 发布:北京华悦网络 编辑:程序博客网 时间:2024/06/09 13:38
首先说另一个问题,就是前面那篇文章上说的在Groups表中只调入ParentID为空的那些顶级组对象的方法:
???ICriterion ex=Expression.IsNull("ParentGroup");
???Order o=Order.Asc("GroupID");
???IList li=session.CreateCriteria(typeof(Group)).Add(ex).AddOrder(o).List();
第一句话定义一个条件,括号里面的是Group类里面该条件所对应的字段,而不是数据库里的真正字段名,第二句话定义一个排序,(这个只是提取这个顶级组的时候的排序),第三句话使用session的这个方法加载对象,它的后面可以跟多个条件。这样加载进来的List就是包含了所有顶级组的对象的列表,而且是排序的。但是这样并不能保证每个对象里的ChildGroups和Items里面所包含的子类也是排序的。
解决办法是,在类定义中直接使用IList类来定义这两个序列对象,而不是使用Iesi库里面的ISet。同时,在hbm配置文件里也不能使用set来定义one-to-many,要使用bag,这就是我一开始使用IList总是失败提示无法正确转换对象的原因所在。bag段允许一个特别定义:Order By。
????? <bag name="ChildGroups" inverse="true" table="Groups" cascade="all" order-by="GroupID asc">
通过这样的设置,在调入某个组所对应的下级组的时候,生成的SQL语句就会加上Order byGroupID,调入的对象也就是排序的了。(我还不知道bag后面加的这个是类里面字段的名字还是数据库里面字段的名字,应该是类里的名字,这个很容易试出来。因为我定义的两个字段的名字是相同的,所以暂时懒的去管它了)。
解决了这个问题,终于可以开始用NHibernate开发实用的程序了。
- 终于解决了NHibernate的排序问题
- NHibernate解决了一个问题
- 问题终于解决了
- 终于解决昨天的问题了
- ruby的奇怪问题~~~终于解决了.!
- FreeTextBox的问题终于解决了
- 终于解决了liferay的缓存问题!
- 终于解决了liferay的缓存问题!
- 图像读写的问题终于解决了
- 终于解决了mmap的问题
- 终于解决无线连接不成功的问题了
- 终于解决了的Radio问题
- libusb的问题终于解决了
- 终于解决Tslib的问题了
- 文件读取的问题终于解决了!
- IRQL_NOT_LESS_OR_EQUAL的问题终于算解决了
- 郁闷了好多天的的问题终于解决了
- 困扰了一个星期的XML问题终于解决了
- oracle循环语句
- 网页上显示word和Excel
- 利用JProfiler对应用服务器内存泄漏问题诊断一例(转)
- 色彩心理效应
- C#用流实现DataGridView中数据Excel格式的导出
- 终于解决了NHibernate的排序问题
- C#中如何根据身份证号码得到出生日期和性别
- 远程连接sql server 2000服务器的解决方案
- 用CMarkup类解析XML文档 2
- 怎样去调试一个新设计的电路板
- 查询某段时间内过生日的员工名单的SQL语句
- asp.net真的没落了吗?我的大学,我的专业
- 模仿提升抽象进阶
- winform关闭窗口的两个问题