RavenDB动态对象

我的代码看起来像这样:

using (var session = DocumentStore.OpenSession()) { var dbItem = session.Load(item.Id); if (dbItem is DynamicJsonObject) { dbItem["PropertyName"] = "new value"; } session.SaveChanges(); } 

我无法弄清楚的是如何更新dbItem的属性。
有谁知道该怎么办? 我试过直接访问属性名称,如下所示:dbItem.PropertyName我也试过转换为ExpandoObject,IDictionary等。 但似乎没有任何效果。

从Raven 2.5开始,对动态对象的支持似乎主要用于读取方面,并且在现有对象上设置属性并不容易,因为inheritanceDynamicObject Raven.Abstractions.Linq.DynamicJsonObject只实现了读取/调用动态合约的方法,如TryGetMemberTryGetIndexTryInvokeMember 。 但没有像TrySetMember这样的项目。

但是,如果转换为IDynamicJsonObject它提供对可以操作的内部RavenJObject访问。

此代码示例应说明如何:

 using (var session = store.OpenSession()) { dynamic entity = new ExpandoObject(); entity.Id = "DynamicObjects/1"; entity.Hello = "World"; session.Store(entity); session.SaveChanges(); } using (var session = store.OpenSession()) { var json = session.Load("DynamicObjects/1") as IDynamicJsonObject; json.Inner["Name"] = "Lionel Ritchie"; json.Inner["Hello"] = "Is it me you're looking for?"; session.SaveChanges(); } using (var session = store.OpenSession()) { dynamic loadedAgain = session.Load("DynamicObjects/1"); Console.WriteLine("{0} says Hello, {1}", loadedAgain.Name, loadedAgain.Hello); // -> Lionel Ritchie says Hello, Is it me you're looking for?" }