Castle学习系列(七)---ActiveRecord HQL介绍

        ActiveRecord 中HQL也就是NHibernate中的HQL,可用来查询实体。

        简单的HQL写法如下:

public static Post[] GetPosts(int id)
{
     SimpleQuery<Post> q = new SimpleQuery<Post>(@"from Post p where p.OwnerBlog.id = ?", id);
     return q.Execute();
}

public static int[] GetPostIdsFromInterval(int start, int end)
{
     SimpleQuery<int> q = new SimpleQuery<int>(typeof(Post), @"select p.Id from Post p where p.Id between :start and :end");
     q.SetParameter("start", start);
     q.SetParameter("end", end);
     return q.Execute();
}

public int CurrentPostMax()
{
     ScalarQuery<int> q = new ScalarQuery<int>(typeof(Post), @"select max(p.Id) from Post p where p.OwnerBlog = ?", this);
     return q.Execute();
}


其中SimpleQuery为简单的查询类,而ScalarQuery为简单的查询单个字段值的类。当然ActiveRecord可用NHibernate的查询方法,代码如下:

public static Post[] GetPostsFromAuthor(String author)
{
     return (Post[])Execute
     (
         delegate(ISession session, object instance)
         {
              IQuery query = session.CreateQuery("from Post p where p.OwnerBlog.Name = :author");
              query.SetString("author", (String)instance);
              IList results = query.List();
              Post[] posts = new Post[results.Count];
              results.CopyTo(posts, 0);
              return posts;
         }, 
         author
     );
}

要了解HQL更多知识,请参考NHibernate官方文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值