Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有人能提供一个C“SQLite示例”吗;设置超时“;?_C#_Nhibernate_Sqlite_Fluent Nhibernate_System.data.sqlite - Fatal编程技术网

C# 有人能提供一个C“SQLite示例”吗;设置超时“;?

C# 有人能提供一个C“SQLite示例”吗;设置超时“;?,c#,nhibernate,sqlite,fluent-nhibernate,system.data.sqlite,C#,Nhibernate,Sqlite,Fluent Nhibernate,System.data.sqlite,我正在Fluent NHibernate项目中使用SQLite(system.data.SQLite v.1.0.60.0) 我有一个程序向数据库写入数据,另一个程序从数据库读取数据。偶尔,我会遇到SQLITE_繁忙异常,我需要修复它 我在Google上找到了几个对sqlite\u busy\u timeout的引用,如果我理解正确的话,这些引用将导致sqlite在抛出异常之前重试。这可能足以满足我的需要 但是,system.data.sqlite程序集中似乎不存在此项 当我使用对象浏览器搜索设

我正在Fluent NHibernate项目中使用SQLite(system.data.SQLite v.1.0.60.0

我有一个程序向数据库写入数据,另一个程序从数据库读取数据。偶尔,我会遇到SQLITE_繁忙异常,我需要修复它

我在Google上找到了几个对sqlite\u busy\u timeout的引用,如果我理解正确的话,这些引用将导致sqlite在抛出异常之前重试。这可能足以满足我的需要

但是,system.data.sqlite程序集中似乎不存在此项

当我使用对象浏览器搜索设置超时时,我得到两个点击:

System.Data.SQLite.SQLite3.SetTimeout(int)

System.Data.SQLite.SQLiteBase.SetTimeout(int)

但我似乎无法在我的代码中使用它们——它们在Intellisense中没有显示,VS2008为SQLite3显示了一条红色下划线,并显示消息“此处无法访问内部类”

有人能给我一个示例(用C#)来展示这个方法的确切语法吗

或者这是正确的方法?我可能会在我的代码中检查SQLITE_BUSY,但也没有找到任何演示这种方法的好例子


最后,Fluent NHibernate或NHibernate是否有任何机制提供对SQLite数据库的简单共享访问?

SetTimeout
是NHibernate查询接口、
ICriteria
IQuery
的成员

例如:

using (var session = sessionFactory.OpenSession())
using (var tx = session.BeginTransaction())
{
    var items = session.CreateQuery("select something complex from a big table")
                       .SetTimeout(600) // 10 minutes
                       .List();
    tx.Commit();
}
就像你说的,所以你(或NHibernate)不能打电话给它。该方法仅包装
sqlite\u busy\u timeout
和throws,您肯定不想在应用程序代码中使用这些不安全的方法


根据,SQLite提供程序应重试30秒。

感谢您的回复-我将尝试此操作。此外,我的问题措辞很糟糕——实际上我想直接设置SQLite超时。做了一个大的重写-希望现在更清楚。谢谢!有没有办法将超时时间设置为更短的时间间隔(比如5秒),以加快测试速度?@Tom Bushell:老实说,如果您需要这种并发性,我建议您使用其他DB引擎。嵌入式数据库引擎通常不适合这种情况。我们的并发性要求非常低,SQLite似乎足以胜任这项工作。还不清楚为什么它还不起作用。