gpt4 book ai didi

c# - 如何将 Bson 文档反序列化为 POCO?

转载 作者:太空狗 更新时间:2023-10-30 01:02:31 26 4
gpt4 key购买 nike

我正在使用 Mongo .Net Driver查询 MongoDB 数据库,我想将返回的 Bson 文档映射到我的客户对象 Poco。

为了做到这一点,我创建了一个 LoadCustomers() 来从查询的 Bson 文档中返回反序列化的客户列表。

在我的 Customer POCO 类中,每个属性都标有 BsonElement 标签,这应该有助于 Bson 到 Object 的映射。

但是当我尝试使用 this answer 中的 FindAs<> 进行反序列化时,我收到一个编译器错误,指出没有这样的方法。

如何使用 MongoDB .Net 驱动程序将 MongoDB Bson 文档作为 POCO 列表返回?

这是我目前对加载方法的尝试:

    public static List<Customer> LoadCustomers()
{
var client = new MongoClient(connectionString);
var database = client.GetDatabase("orders");
//Get a handle on the customers collection:
var docs = database.FindAs<Customer>("customers");
return docs;
}

下面是我的客户 POCO,显示了文档中的字段:

    public class Customer
{
/// <summary>
/// This attribute is used to map the Id property to the ObjectId in the collection
/// </summary>
[BsonId]
public ObjectId Id { get; set; }

[BsonElement("firstName")]
public string firstName { get; set; }

[BsonElement("lastName")]
public string lastName { get; set; }

[BsonElement("email")]
public string Email { get; set; }

}

最佳答案

如果您想选择集合中的所有客户,请使用如下代码:

var docs = await database.GetCollection<Customer>("customers").Find(new BsonDocument()).ToListAsync();

要通过 id 查询单个文档,应该使用这样的东西:

var filter = Builders<Customer>.Filter.Eq(c => c.Id, <ID>);
var result = await database.GetCollection<Customer>("customers").Find(filter).FirstOrDefaultAsync();

关于c# - 如何将 Bson 文档反序列化为 POCO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com