zoukankan      html  css  js  c++  java
  • NHibernate扫盲

    1. NHibernate中Get和Load的区别

      (1) get()采用立即加载方式,而load()采用延迟加载;

        get()方法执行的时候,会立即向数据库发出查询语句,

      而load()方法返回的是一个代理(此代理中只有一个id属性),只有等真正使用该对象属性的时候,才会发出sql语句

      (2) 如果数据库中没有对应的记录,get()方法返回的是null.而load()方法出现异常ObjectNotFoundException

      如果加载一个对象的目的是为了访问它的属性,可以用get方法

      如果加载一个对象的目的是为了删除它,或者是为了建立于别的对象的关联,可以用load

       

      2. 使用ICriteria.Order对结果集排序,第二个参数true代表asc,false代表desc。例如下面例子查询Customer对象按FirstName降序、Lastname升序。

      .AddOrder(new NHibernate.Criterion.Order("Firstname", false))

      .AddOrder(new NHibernate.Criterion.Order("Lastname", true))

       

      3.NHibernate支持/定义的几种类型的集合

      Bag:对象集合,每个元素可以重复。例如{1,2,2,6,0,0},在.Net中相当于IList或者IList<T>实现。

      Set:对象集合,每个元素必须唯一。例如{1,2,5,6},在.Net中相当于ISet或者ISet<T>实现,Iesi.Collections.dll程序集提供ISet集合。

      List:整数索引对象集合,每个元素可以重复。例如{{1,"YJingLee"},{2,"CnBlogs"},{3,"LiYongJing"}},在.Net中相当于ArraryList或者List<T>实现。

      Map:键值对集合。例如{{"YJingLee",5},{"CnBlogs",7},{"LiYongJing",6}},在.Net中相当于HashTable或者IDictionary<Tkey,TValue>实现。

      实际上,我们大多数情况下使用Set集合类型,因为这个类型和关系型数据库模型比较接近。

       

      4.NHibernate的接口大致分为四类

      1. 被应用程序调用进行基本数据操作(增、删、改、查)的接口。这些接口是应用程序的业务逻辑层和控制层与NHibernate的主要交互点。ISession, ITransaction, IQuery和ICriteria属于此类。

      2. 被应用程序用来配置NHibernate的接口。Configuration就属此类。

      3. 回调接口。应用程序用回调接口来响应NHibernate中触发的事件。这类接口包括Interceptor, ILifecycle和IValidatable等。

      4. 用于扩展NHibernate的强大映射功能的接口。这类接口通常被应用程序的基础架构来实现。IUserType, ICompositeUserType, 和IIdentifierGenerator属于此类。

       

      5.NH操作的7个步骤

      (1)       Confiuration

      (2)       创建SessionFactory

      (3)       打开Session

      (4)       开始一个事务

      (5)       持久化操作Save/Update/Delete

      (6)       提交事务

      (7)       关闭Session

  • 相关阅读:
    数组实现队列
    qsort用法 (转)
    枚举法
    HDU 2293
    bfs 街道赛跑
    漫谈二分查找Binary Search (转)
    qsort 结构体二级排序实例
    优化枚举法
    10项比较重要的.NET技术
    ADO.NET SQL Provider 和 ADO.NET OLE DB Provider 和 ADO.NET ODBC Provider 性能对比。
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/5252032.html
Copyright © 2011-2022 走看看