gpt4 book ai didi

c# - MongoDB 在 InsertOne 上抛出 "MongoDB.Bson.BsonSerializationException"

转载 作者:可可西里 更新时间:2023-11-01 10:39:47 24 4
gpt4 key购买 nike

我有以下模型:

Public class UserInfo{
public string Id{get;}
public Dictionary<string, string> Metadata{ get; }
}

当我尝试向数据库添加一个新的 UserInfo 时:

“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name” 作为我收藏的元数据中的键名,使用:

Dbcontext.myCollection.InsertOne(data);

我收到以下错误消息:

MongoDB.Bson.BsonSerializationException: 'Element name 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name' is not valid'.'

我可以看出问题出在字典中有一个 url 作为键,因为当我从字典中删除这个键时,它工作正常,而且当我在字典外使用这个值时它也工作正常。

我怎样才能克服这个问题?

最佳答案

我不确定您是否可以将字典直接序列化到 MongoDB 中,但有一种解决方法。您可以将字典转换为 KeyValuePairs 列表,它应该可以工作。

例如

public class UserInfo
{
[BsonId]
public ObjectId Id { get; set; }
public List<KeyValuePair<string, string>> Metadata { get; set; }
}

并填充要序列化到 MongoDB 中的对象。

var userInfo = new UserInfo
{
Metadata = new List<KeyValuePair<string, string>>()
};

userInfo.Metadata.Add(new KeyValuePair<string, string>(
@"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", "01"));

var userInfoCollection = mongoDatabase.GetCollection<UserInfo>("Users");
userInfoCollection.InsertOne(userInfo);

它应该发出以下文件

{ 
"_id" : ObjectId("5a678a3845acb9547c1ab4f9"),
"Metadata" :
[
{ "k" : "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", "v" : "01" }
]
}

关于c# - MongoDB 在 InsertOne 上抛出 "MongoDB.Bson.BsonSerializationException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404248/

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