Csharp/C#教程:RavenDB动态对象分享


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访问。

此代码示例应说明如何:

上述就是C#学习教程:RavenDB动态对象分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 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?" } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1016280.html

(0)
上一篇 2021年12月31日
下一篇 2021年12月31日

精彩推荐