我正在使用基于内存的数据库(使用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 ~ …