在NHibernate中,我看到了很多代码写成:
using(ISession sess = factory.OpenSession()) {
using(ITransaction trans = sess.BeginTransaction()) {
// query, or save
trans.Commit();
}}
开始交易的查询,甚至单个实体更新总是困惑我为什么?然后,看完之后我了解到,如果按照这个模式,你将得到2个好处:
- 自动连接释放
- 自动冲水
很公平。 我的问题是关于Castle ActiveRecord和连接池。
我正在使用ASP.NET应用活动记录,以及常见的模式是创建整个请求的会话。
我的问题是:
1. 我应该使用SessionScope或TransactionScope的(和使用开始/结束交易获得/释放我的连接),使我达到高效的连接池, - 即。我只想在持久性逻辑期间坚持数据库连接(ADO.net连接对象),而不是在请求的整个生命周期内(使用由上述nhibernate事务实现的连接语义)?
2. 不SessionScope刷新当它超出范围(即在其Dispose方法)?
LK(已回答):是的,除非范围是只读的。
3. 不TransactionScope的回滚时,它超出范围(即在其Dispose方法)?
LK(回答):取决于onDispose行动,但默认情况下它提交。
4. 哪里的官方城堡活动记录文件; - 我看到各种网站和各种网站与断开的链接的点点滴滴。是否有像nhibernate或甚至是一本书的官方PDF文档?