nhibernate使用sql查询

在使用NHibernate的时候,我们经常会发现需要使用sql语句来查询某些关系比较复杂的表,通常使用sql语句查询出的结果集需要转换成实体的集合形式,进行过滤和序列化展示等操作。Nhibernate已经为我们提供了非常方便的方法,示例如下:

首先我们需要一个实体类

假设A表中有字段A1,A2,A3,B表中有字段B1,B2,B3

public class ReportModel
{
<span style="white-space:pre">	</span>public string A1 { get; set; }
<span style="white-space:pre">	</span>public string A2{ get; set; }
<span style="white-space:pre">	</span>public string A3{ get; set; }
<span style="white-space:pre">	</span>public string B1{ get; set; }
<span style="white-space:pre">	</span>public string B2{ get; set; }
<span style="white-space:pre">	</span>public string B3{ get; set; }
}

查询代码

 

var sql = "select * from A,B";
ISession session = SessionFactory.OpenSession();
IQuery query =session.CreateSQLQuery(sql)
.AddScalar("A1", NHibernateUtil. String)
.AddScalar("A2", NHibernateUtil.String)
.AddScalar("A3", NHibernateUtil.String)
.AddScalar("B1", NHibernateUtil.String)
.AddScalar("B2", NHibernateUtil.String)
.AddScalar("B3", NHibernateUtil. String)
.SetResultTransformer(Transformers.AliasToBean< ReportModel >());
result =query.List< ReportModel >();

OK,核心代码只有这么多,非常简单。这些使用方法在nhibernate的api文档中有相当详细的描述,这里就不再复述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值