我有一个具有任意数量属性的 ExpandoObject。我想将这些属性作为 BsonDocument 保存到 MongoDB 数据库中。我尝试使用以下代码:
private BsonDocument GetPlayerDocument(IPlayer player)
{
var ret = new BsonDocument();
ret.Add("FirstName", player.FirstName).
Add("LastName", player.LastName).
Add("Team", player.Team).
Add("Positions", new BsonArray(player.Positions));
foreach (var stat in (IDictionary<String, Object>)player.Stats)
{
ret.Add(stat.Key, stat.Value.ToBson());
}
return ret;
}
但是,在对象上调用扩展方法 ToBson() 时,我收到以下异常:当 State 为:Initial 时无法调用 WriteInt32。
我知道的唯一 WrtieInt32 是 Marshall 类的静态方法。我是不是搞错了?
最佳答案
这很简单。 ExpandoObject
继承 IDictionary
可与 BsonDocument
一起使用。
dynamic data = new ExpandoObject();
var doc = new BsonDocument(data);
collection.Save(doc);
关于c# - 将 ExpandoObject 持久化到 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073209/