全部,
在 Nhibernate 中,我看到很多代码写成:
using(ISession sess = factory.OpenSession()) {
using(ITransaction trans = sess.BeginTransaction()) {
// query, or save
trans.Commit();
}}
开始查询事务甚至单个实体更新总是让我感到困惑,为什么?然后在阅读后我了解到,如果您遵循此模式,您将获得 2 个好处:
- 自动连接释放
- 自动冲洗
很公平。我的问题是关于 Castle ActiveRecord 和连接池。
我在 ASP.NET 应用程序中使用 Active Record,常见的模式是为整个请求创建一个会话。
我的问题是:
1.我应该使用 SessionScope 还是 TransactionScope (并使用开始/结束事务来获取/释放我的连接),以便实现有效的连接池,即。我只想在我的持久性逻辑期间保持数据库连接(ADO.net 连接对象),而不是在请求的整个生命周期(使用上面提到的 nhibernate 事务实现的连接语义)?
2. SessionScope 超出范围时是否会刷新(即在其 Dispose 方法中)?
LK(已回答):是的,除非范围是只读的。
3. TransactionScope 在超出范围时(即在其 Dispose 方法中)是否回滚?
LK(已回答):取决于 onDispose 操作,但默认情况下它会提交。
4. Castle Active Record 的官方文档在哪里? - 我在各个站点和各个站点的链接断开的站点上看到了零碎的信息。是否有像 nhibernate 甚至一本书这样的官方 PDF 文档?