Коллекция LiteDB возвращена, но запрос возвращает ноль - PullRequest
0 голосов
/ 25 июня 2018

Я провел немало исследований, но я не могу найти никого, у кого есть такая же проблема, как у меня (к сожалению).Я использую LiteDB для создания базы данных NoSQL.

При первом запуске программы и создании базы данных запрос в приведенном ниже примере работает просто отлично.Когда я перезапускаю программу, она не может сказать, что она пустаСтранная вещь, если я делаю подсчет, он возвращает 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); //

}

Спасибо!

1 Ответ

0 голосов
/ 25 июня 2018

Ну, я понял это (так много часов отладки потрачено впустую!) Мой код находится в неправильном месте, если я переместлю его в оператор 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); //
        }
...