显然我是真的错了,在这个线程交易问题
Should I always use transactions in nhibernate (even for simple reads and writes)?
是怎么回事,你可以从一个读得到不一致的结果没有交易?
编辑 - 原始问题是在nhibernate的上下文中。这是nhibernate具体的吗?
显然我是真的错了,在这个线程交易问题
Should I always use transactions in nhibernate (even for simple reads and writes)?
是怎么回事,你可以从一个读得到不一致的结果没有交易?
编辑 - 原始问题是在nhibernate的上下文中。这是nhibernate具体的吗?
不,它不是冬眠特定的。
简答:交易是“工作原子单位”,具有一致的世界观。一旦交易完成,受保护的“视图”需要通过世界观(COMMITTTED)来纠正 - 或者在只读交易的情况下,可以简单地解除一致的视图(只需要在交易过程中一致)。
较长的答案:有很多不同类型的事务(READ UNCOMMITTED,READ COMMITTED,SERIALIZABLE,REPEATABLE READ等)影响细节。
见Wiki: Database Transaction和Isolation (DBMS) - 后者需要几个链接点击,才能找到:-)
想象一下很快做作顺序,A和B表示使用DB不同的演员和每一个动作在它自己的运行单关闭隐性交易(而不是其他):
请参阅隔离wiki文章的“示例查询”部分。
对,但是如果一个服务器操作正在执行单个读操作,那么当写并发操作没有正确类型的事务隔离时,不会发生未提交的读操作类型错误? – hvgotcodes 2010-07-21 23:32:19
@hvgotcodes我会对我先前的评论进行一些评估。如果您只是在SQL Server *中进行单一读取,则不必担心事务,因为您将自动处于隐式事务中。 – 2010-07-21 23:34:29