将TransactionScope隔离级别更改为内存DB中的快照 - c#

我正在使用基于内存的数据库(使用ServiceStack.OrmLite.Sqlite.Windows)在基于Servicestack的Web API中进行单元测试。我正在尝试测试的方法如下。

public object Get(object request)
{
    using (var db = HostContext.Resolve<IDbConnectionFactory>().OpenDbConnection("ConnectionString"))
    {                           
        using (var dbtran = db.OpenTransaction(IsolationLevel.Snapshot))
        {
            // reading operation from DB
            return response;
        }
    }
}

当我尝试使用InmemoryDB连接测试此方法时,由于IsolationLevel而导致出现以下异常。

类型“ System.ArgumentException”的异常发生在
System.Data.SQLite.dll,但未在用户代码中处理

在创建inmemoryDB时,我尝试将隔离级别设置为快照,如下所示:

var isolationlevel = IsolationLevel.Snapshot;
db.OpenTransaction().IsolationLevel.Add(isolationlevel);

即使执行此操作后,事务级别也显示为“可序列化”,并获得相同的异常。

还有其他方法可以将inmemoryDB中的“事务隔离级别”设置为“快照”吗?

参考方案

Sqlite不支持创建IsolationLevel.Snapshot事务,但是SQLite's Isolation and Concurrency文档指示,通过运行“ PRAGMA journal_mode = WAL”启用Write Ahead Logging(WAL)模式时,SQLite会显示“快照隔离”,您可以在OrmLite中使用以下命令进行设置:

db.ExecuteSql("PRAGMA journal_mode=WAL");

SQLite-无法连接数据库 - c#

背景:1.它是一个使用Sqlite databse的C#应用​​程序2.如果不存在db,则此应用程序将创建一个空的db,并将数据从服务器同步到该数据库。问题:1.有时应用程序突然崩溃。似乎有一些未处理的异常。2.即使我重新启动该应用程序,它也立即崩溃。临时解决方案:1.将数据库复制到其他位置,然后删除原始数据库。2.运行该应用程序。没有崩溃。由于不存在任何数…

SQLite PDO绑定不起作用? - php

我觉得我对此一无所知。我有三个简单的表。一个用户表,一个角色表和一个role_user表,该表以多对多关系连接用户和角色。对于用户角色,我有以下代码:$query = $pdo->prepare('select roles.* from roles inner join role_user on roles.id = role_user.ro…

SQLite.Net,相当于SQLite位数据类型的C# - c#

我在C#中声明以下课程[Table("Employee")] public class Employee { [PrimaryKey,AutoIncrement] public int EmployeeId { get; set; } public DateTime DateOfJoining { get; set; } public s…

更新System.Data.SQLite.dll后,SQLite无效URI - c#

我首先有以下SQLite版本:1.0.77.0(sqlite-netFx40-static-binary-bundle-Win32-2010-1.0.77.0)而且一切正常。将System.Data.SQLite.dll更新到版本1.0.82.0(sqlite-netFx40-static-binary-bundle-Win32-2010-1.0.82.0)…

是否可以阻止用户下载SQLite文件? - php

我正在从here学习SQLite3;它确实很好并且可移植,但是如果有人以某种方式知道数据库文件名test.db然后直接下载它怎么办?它可能比SQL注入更为危险,因为攻击者可以轻松获取整个数据库的副本。 参考方案 您可以限制.db文件中的.htaccess文件以执行相同的操作,将这行代码添加到位于根目录中的.htaccess文件中<Files ~ �…