servicestack ServiceStack.OrmLite是否支持乐观并发,servicestack,ormlite-servicestack,servicestack,ormlite Servicestack" /> servicestack ServiceStack.OrmLite是否支持乐观并发,servicestack,ormlite-servicestack,servicestack,ormlite Servicestack" />

servicestack ServiceStack.OrmLite是否支持乐观并发

servicestack ServiceStack.OrmLite是否支持乐观并发,servicestack,ormlite-servicestack,servicestack,ormlite Servicestack,我惊讶地发现没有关于这个主题的文档,有人知道OrmLite是否支持乐观并发吗?任何文档或示例参考都将是最受欢迎的。这并不是OrmLite真正需要的。这取决于隔离级别和数据库设置 例如: using (var trans = Db.BeginTransaction(IsolationLevel.ReadCommitted) as SqlTransaction) { try {

我惊讶地发现没有关于这个主题的文档,有人知道OrmLite是否支持乐观并发吗?任何文档或示例参考都将是最受欢迎的。

这并不是OrmLite真正需要的。这取决于隔离级别和数据库设置

例如:

using (var trans = Db.BeginTransaction(IsolationLevel.ReadCommitted) as SqlTransaction)
            {
                try
                {
                    //do something
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw ex;
                }
            }
}

读取已提交的
指定语句无法读取具有 已被修改但未被其他事务提交。这防止了 肮脏的阅读数据可以通过之间的其他事务进行更改 当前交易中的个别报表,导致 不可重复读取或虚拟数据。此选项是SQL Server 违约READ COMMITTED的行为取决于 读取提交的快照数据库选项:

如果READ_COMMITTED_SNAPSHOT设置为ON,则数据库引擎将使用row 版本控制,以使用事务一致的 在语句开头存在的数据的快照。 锁不用于保护数据不被其他用户更新 交易

或者,您可以使用
BeginTransaction(IsolationLevel.Snapshot)
并具有乐观并发性,因为您可以避免锁定,但SQL Server在提交之前使用避免修改在当前事务之外修改的数据

其他:

在快照隔离下运行的事务 通过获取数据前的锁来修改数据的方法 仅执行修改以强制约束。否则,, 在修改数据之前,不会对数据获取锁。什么时候 数据行满足更新条件,即快照事务 验证数据行是否未被并发服务器修改 快照事务开始后提交的事务。如果 数据行已在快照事务外部修改,一个 发生更新冲突,快照事务终止。这个 更新冲突由数据库引擎处理,没有办法 禁用更新冲突检测


据我所知,Ormlite提供了IDBConnection的包装,非常薄的包装。如果您正在使用“using”,它将为您关闭连接。没有为并发性做任何具体的工作。事务也是IDBConnection的一部分。