[关注HQL]
在上一篇文章中,经过各位的帮助,终于搞定了主子对象的级联插入保存操作(对应的就是主子表的插入)。从现在开始继续探索NHibernate提供的查询体系!
NHibernate提供了一个特殊的查询语言HQL(Hibernate Query Language),如果只是站在查询的角度,NHibernate就是把HQL翻译成SQL的翻译器而已!
我来写个HQL语句试试看!
需求说明如下:Data.UniversityClass是映射的类名
universityclass 对应的数据库表名
StartDate是Data.UniversityClass的一个属性,当然他也对应数据库表的一个字段!
现在我只想取到StartDate一个属性的值,而不是默认的Select * .
看了说明以后,这个太简单了,你可能马上就写出来了
select StartDate from Data.UniversityClass
或者,你认为类名无法精确定位,提出如下答案:
select Data.UniversityClass.StartDate from Data.UniversityClass
其实这两个都是错的,这个我测试了10分钟,才搞明白!
报错:undefined alias or unknown mapping: StartDate [select StartDate from Data.UniversityClass]
后来非常仔细的看了一下其他例子,正确的写法如下:
select myClass.StartDate from Data.UniversityClass as myClass
结果就正确的显示出来了,为什么?
在上一篇文章中,经过各位的帮助,终于搞定了主子对象的级联插入保存操作(对应的就是主子表的插入)。从现在开始继续探索NHibernate提供的查询体系!
NHibernate提供了一个特殊的查询语言HQL(Hibernate Query Language),如果只是站在查询的角度,NHibernate就是把HQL翻译成SQL的翻译器而已!
我来写个HQL语句试试看!
需求说明如下:Data.UniversityClass是映射的类名
universityclass 对应的数据库表名
StartDate是Data.UniversityClass的一个属性,当然他也对应数据库表的一个字段!
现在我只想取到StartDate一个属性的值,而不是默认的Select * .
看了说明以后,这个太简单了,你可能马上就写出来了
select StartDate from Data.UniversityClass
或者,你认为类名无法精确定位,提出如下答案:
select Data.UniversityClass.StartDate from Data.UniversityClass
其实这两个都是错的,这个我测试了10分钟,才搞明白!
报错:undefined alias or unknown mapping: StartDate [select StartDate from Data.UniversityClass]
后来非常仔细的看了一下其他例子,正确的写法如下:
select myClass.StartDate from Data.UniversityClass as myClass
结果就正确的显示出来了,为什么?
[简单思考]
如果站在面向对象的角度考虑一下,就发现这个也蕴含了一定的OO思想,
我们再仔细看看Data.UniversityClass是什么,没错,类名!
那么类名的属性可以直接用吗?不能,除非类是Static的,
那么as myClass是否很像建立了一个Class的对象,那么剩下的就对了啊!
分类:
[技术.Net]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!