NHibernate学习(四)Session、Query 与 HQL

NHibernate框架中实体对应数据库中的记录的操作:

static ISessionFactory factory;

static ILog logger;

ISession session;

 

Configuration config = new Configuration();

Config.Configure();

factory = config.BuildSessionFactory();

session = factory.OpenSession();

1、获取记录

User user = (User)session.Get(typeof(User), 1);//数字1为对应数据库中记录的主键值IDUser为实体类的名称

 

或者

User user = session.Get<User>(1); //强类型方法,1为对应记录的ID

 

2、保存记录

session.Save(user);

 

3、更新记录

session.Update(user); 或者

session.Save(user);//也可以更新记录时用Save()方法

 

4、删除记录

session.Delete(user);

 

5、其它获取记录方法

User user=(User)session.Load(typeof(user),1);

或者:

User user = session.Load<User>(5);//强类型方法

这两个方法是假定所指定的实体类是存在的,即假定数据库存在这样的记录,否则会抛出不存在异常,而Get的两个方法不存在时返回null!

 

 

6HQLNHibernate Query Language

//IQuery query = session.CreateQuery("from User");//User为映射数据中的表名的实体,数据库中表名为Users,项目中自成的对应实体名为User

//或者 如:(只查询部分字段)

//IQuery query = session.CreateQuery("select u.Id,u.FirstName  From User as u join u.Role as r where r.Id = 1 ");

 

或者 如:(查询整个实体数据)

IQuery query = session.CreateQuery("select u From User as u join u.Role as r where r.Id = 1 ");

//通过连接选中实体u中的所有的属性 join 会自动 匹配 u.RoleId = r. RoleId

IList<User> list = query.List<User>();//执行HQL,下面显示数据

Console.WriteLine(list[0].FirstName);

for (int i = 0; i < list.Count; i++)

{

    Console.WriteLine(list[i].Id);

}

User user1 = list[0];

Console.WriteLine(user1.FirstName);

 

HQL中,我们可以应用where条件查询( =,>,< between ,in like, and ,or, is等)

在选择部分字段时:字段大小写应该尽量跟属性名称保持一致,尤其是在使用别名的情况下,

如:select u.FirstName

在使用HQL时,同样可以利用聚合函数,如 select avg(u.Age),sum(u.Age)

可以对记录进行排序 如:order by u.Id

可以对记录进行分组 如:group by r.Id

 

转载于:https://www.cnblogs.com/vihone/archive/2010/05/11/1732751.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值