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