c# - 事务在 nhibernate 中是如何工作的?

标签 c# nhibernate orm

我刚开始学习 nHibernate,我对事务感到困惑。我知道 nhibernate 会跟踪 session 中对持久对象的所有更改,并且这些更改会在提交时发送到数据库,但事务的目的是什么?

如果我将代码包装在“使用事务” block 中并调用提交,它是仅提交事务中发生的对象更改,还是提交自上次提交刷新以来 session 中发生的所有更改?

最佳答案

事务的目的是确保您不会提交带有脏数据或错误的 session 。考虑一个非常简单的交易案例,即订购一本书。

您可能会执行以下操作: a) 检查这本书此时是否存在。 b) 阅读客户详细信息并查看他的购物车中是否有任何东西。 c) 更新书数 d) 输入订单

现在考虑这样一种情况,当您在输入订单时遇到错误,您希望回滚其他更改,这就是当您回滚事务时。

你是怎么做到的?那么有很多方法。 Web 应用程序的一种方法是监视 HTTP 错误对象,如下所示:

if(HttpContext.Current != null && HttpContext.Current.Error != null)
transaction.Rollback();

理想情况下,您不应使用显式事务 block 来破坏您的工作单元模式。尽量避免这样做

关于c# - 事务在 nhibernate 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244289/

相关文章:

c# - 将 PowerShell 包添加到 .netstandard2.0 类库

c# - 如何确定 "IIsWebDirectory"或 "IIsWebVirtualDir"是ASP.NET应用程序?

nhibernate - 我可以使用 Nhibernate QueryOver 对实体的集合计数进行分组和计数吗?

python - 在 django ORM 中查询时如何将 char 转换为整数?

java - 如何使实体内的属性只读?

php - Laravel 5.1 (Eloquent ORM) 删除相关记录

c# - 使用 linq 进行动态查询

c# - 结合 C# 和 C 的优点/缺点

nhibernate - 在运行时添加 nHibernate 映射?

c# - 如何使用 IHasManyConvention Fluent NHibernate 约定在 HasMany 映射上设置 PropertyRef?