我已经在另一个项目中尝试了下面显示的这段代码,并且该代码有效,因此问题肯定不在负责通过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'类型的未处理异常
其他信息:序列不包含任何元素