gpt4 book ai didi

c# - 使用 BsonClassMap 时获取 MongoDB 中插入文档的 _id?

转载 作者:行者123 更新时间:2023-12-04 13:27:58 24 4
gpt4 key购买 nike

在有人将此问题标记为 Get _id of an inserted document in MongoDB? 的副本之前请阅读整个问题。
我正在使用 MongoDB 驱动程序开发 ASP.NET Core API 应用程序。
我面临的问题是在数据库中插入文档后 Id Post 的属性(property)类未分配由 MongoDB 生成的 id。
我发现他们使用类中的注释/属性解决的问题很少,但是,我正在开发一种模式,其中域类没有任何持久性知识。
我创建了没有注释的实体类:

public class Post
{
public string Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
并使用 BsonClassMap 定义映射:
BsonClassMap.RegisterClassMap<Domain.Entities.Post>(x =>
{
x.AutoMap();
x.MapIdField(x => x.Id)
.SetSerializer(new StringSerializer(BsonType.ObjectId))
.SetIgnoreIfDefault(true);
});
这是代码:
public async Task Create(Domain.Entities.Post entity, CancellationToken cancellationToken)
{
async Task Create()
{
await Post.InsertOneAsync(entity);
}
await Create();
var e = entity;
}
当我检查实体时,Id 属性为空。
那么,在使用 BsonClassMap 时如何获取 id ?

最佳答案

目前,您的代码知道如何读取 Id,当 Id 出现为 ObjectId 时。来自数据库,但在客户端生成 id 时仍然需要帮助,
缺少的部分是SetIdGenerator方法调用,尝试:

BsonClassMap.RegisterClassMap<Post>(x =>
{
x.AutoMap();
x.MapIdField(x => x.Id)
.SetIdGenerator(StringObjectIdGenerator.Instance)
.SetSerializer(new StringSerializer(BsonType.ObjectId))
.SetIgnoreIfDefault(true);
});
现在将在客户端生成 ObjectIds 并将其转换为字符串,因此当您将鼠标悬停在 e 上时,您应该能够看到它们。多变的。
详情 here .

关于c# - 使用 BsonClassMap 时获取 MongoDB 中插入文档的 _id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66980035/

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