我们有一个包含一些属性的类,包括自定义类型的IDictionary。当我们试图推动该IDictionary时,我们正在获得状态,并且#34; Faulted"还有一条异常消息,上面写着"字段序列化程序' DataUpdates'必须实现IBsonArraySerializer并提供项目序列化信息。"
但是在相同代码工作的驱动程序的先前版本上。这是我的示例代码
TestClass1.cs
public virtual string Id { get; set; }
[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
public IDictionary<Metadata, DateTime> DataUpdates { get; set; }
Metadata.cs
public string Collection { get; set; }
public string Source { get; set; }
public string Type { get; set; }
这是我的更新块
var resultMetaData = collection.UpdateOneAsync(Builders<TestClass1>.Filter.Eq(m => m.Id, someID), Builders<TestClass1>.Update.Push("DataUpdates", bsonValue));
和bsonValuse的类型类似
{[{ "Collection" : "TestCollection", "Source" : "TestSource", "Type" : "TestType" }, 2015-06-25T02:51:28.507Z]}
如何在DataUpdates上推送新的bsonValue?如果我们真的需要实现IBsonArraySerializer,那么我们如何实现该序列化器?
答案 0 :(得分:0)
您是否尝试过ToBsonDocument()将某些类对象转换为BsonValue
你的词典是你的实体吗?意思是,不是创建一个保存属性的对象,而是将它们转储到Dictionary ??
中您可以查看两个相关链接:
MongoDB and C# Dictionary Serialisation, Part 1 – The Problem
http://www.danharman.net/2011/09/14/mongodb-and-c-dictionary-serialisation-part-1-the-problem/
How to query a sub document collection using MongoDB and C# driver