无法通过先前已获得的ID获取记录

时间:2019-08-13 17:39:38

标签: c# mongodb

我已经在另一个项目中尝试了下面显示的这段代码,并且该代码有效,因此问题肯定不在负责通过ID从数据库获取数据的方法中。不幸的是,我无法找出导致问题的原因。

最简单的测试用例:我使用可与数据库一起使用的方法来初始化MongoDB类。然后,我使用方法LoadRecords()将存储在数据库中的每个记录加载到集合中。

// some code
MongoDB db = new MongoDB("People");
List<Person> collection = db.LoadRecords<Person>("Person");

//some code
public List<T> LoadRecords<T>(string table)
{
     var collection = db.GetCollection<T>(table);
     return collection.Find(new BsonDocument()).ToList();
}

那很好,它使我可以收集表中的每个文档。现在,我尝试使用方法LoadRecordById()从该集合中查找一个元素,例如其第一个元素的ID。

// some code
Person oneRecord = db.LoadRecordById<Person>("Person", people[0].Id);

// some code
public T LoadRecordById<T>(string table, Guid id)
{
      var collection = db.GetCollection<T>(table);
      var filter = Builders<T>.Filter.Eq("ID", id);
      return collection.Find(filter).First();
}

我的Person类也非常简单,只包含一些属性和ID:

    [BsonIgnoreExtraElements]
    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        [BsonId]
        public Guid Id { get; set; }
    }

这对我来说真的没有任何意义,首先它给我存储在数据库中的每条记录(它的名字,姓氏,ID),然后当我想搜索一条记录时使用与我之前完全相同的ID时,它崩溃了。

  

结果是System.Core.dll中发生的'System.InvalidOperationException'类型的未处理异常

     

其他信息:序列不包含任何元素

0 个答案:

没有答案