C# c sqlite堆栈评估
我在函数行中的find文档中有奇怪的错误 在调试模式命令中,所有属性都包含相同的异常 无法计算表达式,因为机器代码的帧位于调用堆栈的顶部 什么会导致这样的错误?我不知道为什么它不起作用 单身人士:C# c sqlite堆栈评估,c#,sqlite,C#,Sqlite,我在函数行中的find文档中有奇怪的错误 在调试模式命令中,所有属性都包含相同的异常 无法计算表达式,因为机器代码的帧位于调用堆栈的顶部 什么会导致这样的错误?我不知道为什么它不起作用 单身人士: public sealed class Singleton { private static object syncRoot = new Object(); private static SQLiteConnection connection; public static
public sealed class Singleton
{
private static object syncRoot = new Object();
private static SQLiteConnection connection;
public static SQLiteConnection Connection
{
get
{
if (connection == null)
{
lock (syncRoot)
{
if (connection == null)
{
connection = new SQLiteConnection(@"data source=D:\informServicesDocs.db3");
}
}
}
if (connection.State != System.Data.ConnectionState.Open)
{
connection.Open();
}
return connection;
}
}
}
有问题的功能:
public IEnumerable<InformServiceBriefInfo> FindDocuments(InformServiceSearchInfo criteria, int limit, ref int page, out int count)
{
var query = string.Format(@"SELECT *
FROM [BriefDocument]
{0}
ORDER BY [CreatedDate] DESC", whereStr);
string queryCount = string.Format("SELECT COUNT([Id]) FROM [BriefDocument] {0}", whereStr);
List<InformServiceBriefInfo> docs = new List<InformServiceBriefInfo>();
var con = Singleton.Connection;
{
using (var command = new SQLiteCommand(con))
{
command.CommandText = queryCount;
var value = command.ExecuteScalar();
count = (value == DBNull.Value) ? 0 : (int)(long)value;
command.CommandText = query;
if (limit > 0)
{
if (page > count / limit)
page = count / limit;
int offset = page * limit;
command.CommandText += string.Format(" LIMIT {0} OFFSET {1}", limit, offset);
}
using (SQLiteDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
var doc = ReadBriefDocument(reader);
docs.Add(doc);
}
}
}
}
return docs;
}
当您在ExecuteReader或ExecuteScalar期间明确暂停调试器时,是否会发生这种情况?@ThomasLevesque,听起来很奇怪,但当我在SQLiteDataReader=command上放置断点时。ExecuteReader visual studio会引发异常上下文开关死锁。@ThomasLevesque,我注意到,当数据库大小增加时会出现此问题。当您在ExecuteReader或ExecuteScalar期间明确暂停调试器时是否会发生此问题?@ThomasLevesque,听起来很奇怪,但当我在SQLiteDataReader=command.ExecuteReader上放置断点时,visual studio会抛出异常上下文开关死锁。@ThomasLevesque,我注意到当数据库的大小增加时会出现此问题。
public IEnumerable<InformServiceBriefInfo> FindDocuments(InformServiceSearchInfo criteria, int limit, ref int page, out int count)
{
var query = string.Format(@"SELECT *
FROM [BriefDocument]
{0}
ORDER BY [CreatedDate] DESC", whereStr);
string queryCount = string.Format("SELECT COUNT([Id]) FROM [BriefDocument] {0}", whereStr);
List<InformServiceBriefInfo> docs = new List<InformServiceBriefInfo>();
var con = Singleton.Connection;
{
using (var command = new SQLiteCommand(con))
{
command.CommandText = queryCount;
var value = command.ExecuteScalar();
count = (value == DBNull.Value) ? 0 : (int)(long)value;
command.CommandText = query;
if (limit > 0)
{
if (page > count / limit)
page = count / limit;
int offset = page * limit;
command.CommandText += string.Format(" LIMIT {0} OFFSET {1}", limit, offset);
}
using (SQLiteDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
var doc = ReadBriefDocument(reader);
docs.Add(doc);
}
}
}
}
return docs;
}