Mongo C# 将 ObjectId 反序列化为字符串

Etc*_*lon 2 string mongodb bson objectid

我已经更改了所有 C# 实体:

public ObjectId Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

对此:

[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

因为我需要使用 Rebus 并发送 Id,但如果不添加自定义序列化程序,则 ObjectId 不可序列化。实际上字符串在其他地方更方便(例如:MVC 控制器中的模型绑定)。

无论如何,我认为更改不会有问题,但现在我尝试将 ObjectId 反序列化为字符串时遇到异常:我的 ApplicationUser 类有一个

IEnumerable<string> Friendships { get; set; }
Run Code Online (Sandbox Code Playgroud)

包含来自友谊实体的 Id 列表。它们是作为 ObjectId 创建的,但现在我想将它们作为字符串处理...我现在如何在代码中处理它?

小智 6

不将 Id 设置为 ObjectId

将其设置为具有这些属性的字符串

[BsonId(IdGenerator = typeof(StringObjectIdGenerator))] [BsonRepresentation(BsonType.ObjectId)]

public string ID { get; set; }