我碰到、想到和回答过的NHibernate里的不能单独成文的小知识点,持续更新。

 Q:不设置Cache时NHibernate会使用二级缓存吗

A:会,它会使用NHibernate.Cache.HashtableCacheProvider

 
Q:配置文件中use_outer_join和max_fetch_depth有什么作用

A:当使用关联影射时,如果未设置延迟加载,如果use_outer_join为true,则NHibernate用带join的Sql同时读取对象;为false,则分两条Sql读取。

max_fetch_depth表示最多join几个对象。

 

Q:查询时如何分页

A:使用ICriteria时

ISession session=factory.OpenSession();
ICriteria criteria
=session.CreateCriteria(typeof(News));
criteria.SetFirstResult(fromResult);
criteria.SetMaxResults(count);
return criteria.List();

使用IQuery时

IQuery query = Session.CreateQuery(hql);
query.SetFirstResult(fromResult);
query.SetMaxResults(count); 
return query.List();

SetFirstResult设置从那天记录开始,SetMaxResults设置取几条数据

 
Q:Sql2005有dialect吗

A:有,NHibernate论坛可以找到,单独的文件,以后版本可能会加入NHibernate内部。

MsSql2005Dialect.

 

Q:Access有dialect吗

A:NHibernateContrib里面有NHibernate.JetDriver.JetDialect


Q:Guid的unsaved-value怎么设置
A:unsaved-value="00000000-0000-0000-0000-000000000000"