专栏首页张志敏的技术专栏NHibernate 使用 SqlQuery

NHibernate 使用 SqlQuery

NHibernate 使用 SqlQuery

多数情况下, NHibernate 提供的 HQL、 Linq 以及条件查询足够用了, 但是在某些情况下, 需要使用 SqlQuery, 使用 SqlQuery 可以查询标量(简单类型), 查询单表实体类, 关联表查询。

查询标量(简单类型)

var db = this.ObjectContainer.Resolve<NorthwindContext>();

var sqlQuery = db.Session.CreateSQLQuery("select count(0) as c from categories");
sqlQuery.AddScalar("c", NHibernateUtil.Int32);
var count = sqlQuery.UniqueResult<int>();

查询单表实体类

var db = this.ObjectContainer.Resolve<NorthwindContext>();
var sqlQuery = db.Session.CreateSQLQuery("select {c.*} from categories {c}")
    .AddEntity("c", typeof(Category));
var result = sqlQuery.List<Category>();

关联表查询

var db = this.ObjectContainer.Resolve<NorthwindContext>();
var sql = "select {p.*}, {c.*} from products {p} join categories {c} on p.CategoryID = c.CategoryID";
var sqlQuery = db.Session.CreateSQLQuery(sql)
   		.AddEntity("p", typeof(Product))
   		.AddJoin("c", "p.Category");
var result = sqlQuery.List<Product>();

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在 Silverlight 5 项目中使用 async/await

    .Net 4.5 提供了 async/await 让异步编程回归同步, 不过, async/await 不是只能在 .Net 4.5 下才能使用, 通过使用 A...

    beginor
  • 从 OAuth2 服务器获取授权授权

    搭建好了基于 OWIN 的 OAuth2 服务器之后, 接下来就是如何从服务器取得授权了, 下面就介绍如何实现 OAuth2 定义的四种授权方式。

    beginor
  • 在 mono 下使用微软的 OWIN 认证中间件

    使用 Microsoft.Owin.Security 中间件作为 OWIN 应用的标准验证在 IIS 下面工作良好, 不过最近在将 WebAPI 应用迁移到 L...

    beginor
  • deal with collection in ABSL

    版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

    Jerry Wang
  • 验证码

    河湾欢儿
  • Linux-cut命令(22)

    cut剪切命令 cut命令通常用来对某个文本文件进行解析,擅长处理以一个字符间隔的文本内容

    张诺谦
  • 关于dblink锁定带来的问题(r3笔记第20天)

    可能在一些分布式环境中,有一些数据访问都需要用到db link。从某种程度上来说dblink是很方便,但是从性能上来说还是有一些的隐患。如果两个环境之间的网络情...

    jeanron100
  • 灭霸都不会的马赛克还原技术@天天P图

    你去看复联4了吗?最近肯定很多小伙伴都多少有收到这样的「亲切」问候。复联4在周三凌晨上映了,鉴于首映在零点,又是非周末,还TM的需要看3个小时,开发小哥哥想了想...

    天天P图攻城狮
  • C语言中的双重否定

      下列代码的目的是「将"分支转移"的信息提供给编译器,这样可以让编译器对其代码进行优化,以减少指令跳转带来的性能下降」。 __builtin_expect的...

    Qt君
  • ASP.NET Core 对Controller进行单元测试

    单元测试对我们的代码质量非常重要。很多同学都会对业务逻辑或者工具方法写测试用例,但是往往忽略了对Controller层写单元测试。我所在的公司没见过一个对Con...

    kklldog

扫码关注云+社区

领取腾讯云代金券