LiteDB 集合返回但查询 returns 为空
LiteDB Collection returned but query returns null
我已经做了很多研究,但我找不到任何人和我有同样的问题(很遗憾)。我正在使用 LiteDB 创建一个 NoSQL 数据库。
当程序首次运行并创建数据库时,下面示例中的查询工作正常。当我重新启动程序时,它没有说它是空的。奇怪的是,如果我算一下它 returns 8 条记录。所以 东西 存在 - 为什么我不能把它拉出来?
这是我的代码:
public class ExternalTools
{
public int Id { get; set; }
public string Name { get; set; }
public string[] Types { get; set; }
}
public void GetAll()
{
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
var folderPath = localFolder.Path;
var filePath = Path.Combine(folderPath, @"MyData4.db");
using (var db = new LiteDatabase(filePath))
{
Tools = db.GetCollection<ExternalTools>("externalTools");
if (Tools.Count() == 0)
{
CreateToolList();
// Index document using document Name property
Tools.EnsureIndex(x => x.Name);
}
}
Debug.WriteLine(Tools.Count());
var temp = Tools.FindAll(); // null error
var test = Tools.FindById(1); // another null error
Debug.WriteLine(test.Name); //
}
谢谢!
好吧,我想通了(浪费了这么多小时的调试时间!)我的代码放在了错误的位置,如果我将它移到 using 语句中它就可以正常工作。我怀疑这与以下事实有关:在第一个 运行 中,它向集合中添加了内容,因此它具有正确的引用。无论如何,此代码有效:
using (var db = new LiteDatabase(filePath))
{
Tools = db.GetCollection<ExternalTools>("externalTools");
if (Tools.Count() == 0)
{
CreateToolList();
// Index document using document Name property
Tools.EnsureIndex(x => x.Name);
}
Debug.WriteLine(Tools.Count());
var temp = Tools.FindAll(); // null error
var test = Tools.FindById(1); // another null error
Debug.WriteLine(test.Name); //
}
我已经做了很多研究,但我找不到任何人和我有同样的问题(很遗憾)。我正在使用 LiteDB 创建一个 NoSQL 数据库。
当程序首次运行并创建数据库时,下面示例中的查询工作正常。当我重新启动程序时,它没有说它是空的。奇怪的是,如果我算一下它 returns 8 条记录。所以 东西 存在 - 为什么我不能把它拉出来?
这是我的代码:
public class ExternalTools
{
public int Id { get; set; }
public string Name { get; set; }
public string[] Types { get; set; }
}
public void GetAll()
{
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
var folderPath = localFolder.Path;
var filePath = Path.Combine(folderPath, @"MyData4.db");
using (var db = new LiteDatabase(filePath))
{
Tools = db.GetCollection<ExternalTools>("externalTools");
if (Tools.Count() == 0)
{
CreateToolList();
// Index document using document Name property
Tools.EnsureIndex(x => x.Name);
}
}
Debug.WriteLine(Tools.Count());
var temp = Tools.FindAll(); // null error
var test = Tools.FindById(1); // another null error
Debug.WriteLine(test.Name); //
}
谢谢!
好吧,我想通了(浪费了这么多小时的调试时间!)我的代码放在了错误的位置,如果我将它移到 using 语句中它就可以正常工作。我怀疑这与以下事实有关:在第一个 运行 中,它向集合中添加了内容,因此它具有正确的引用。无论如何,此代码有效:
using (var db = new LiteDatabase(filePath))
{
Tools = db.GetCollection<ExternalTools>("externalTools");
if (Tools.Count() == 0)
{
CreateToolList();
// Index document using document Name property
Tools.EnsureIndex(x => x.Name);
}
Debug.WriteLine(Tools.Count());
var temp = Tools.FindAll(); // null error
var test = Tools.FindById(1); // another null error
Debug.WriteLine(test.Name); //
}