C# “MongoDB投掷”;MongoDB.Bson.BsonSerializationException“;关于InsertOne
我有以下型号:C# “MongoDB投掷”;MongoDB.Bson.BsonSerializationException“;关于InsertOne,c#,mongodb,dictionary,url,serialization,C#,Mongodb,Dictionary,Url,Serialization,我有以下型号: Public class UserInfo{ public string Id{get;} public Dictionary<string, string> Metadata{ get; } } 我收到以下错误消息: MongoDB.Bson.BsonSerializationException:'元素名称 “”不是 有效“.” 我可以看出问题在于字典有一个url作为键,因为当我从字典中删除这个键时,它工作得很好,当我在字典之外使用这个值时,它工作得很好
Public class UserInfo{
public string Id{get;}
public Dictionary<string, string> Metadata{ get; }
}
我收到以下错误消息:
MongoDB.Bson.BsonSerializationException:'元素名称
“”不是
有效“.”
我可以看出问题在于字典有一个url作为键,因为当我从字典中删除这个键时,它工作得很好,当我在字典之外使用这个值时,它工作得很好
如何克服这个问题?我不确定是否可以将字典直接序列化到MongoDB中,但有一个解决方法。您可以将字典转换为KeyValuePairs列表,它应该可以工作 e、 g
您是否尝试过其他字典表示法?好吧,问题不在于字典本身,而是值“”是字典中的一个键,因为当我从字典中删除这个值时,一切都变好了
Dbcontext.myCollection.InsertOne(data);
public class UserInfo
{
[BsonId]
public ObjectId Id { get; set; }
public List<KeyValuePair<string, string>> Metadata { get; set; }
}
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" }
]
}