首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用json变更集更新我的实体?

如何使用json变更集更新我的实体?
EN

Stack Overflow用户
提问于 2011-11-02 20:20:02
回答 1查看 391关注 0票数 0

给定使用version属性和json rest-service的乐观并发,客户端只返回由Id、版本和已更改属性组成的变更集,我如何更新服务器端实体?

我想要做的是将json反序列化为分离的实体,然后使用ISession.Merge方法更新我的实体。但是,我的分离实体将有很多属性的空值,并且如果我调用merge,我的实体将用所有这些属性更新,这不是我想要的。如果有一种方法可以告诉merge忽略空的属性,并保留来自持久化实体的任何相应的非空值,这将解决我的问题。

如果无法配置merge的行为,我当然可以获得持久化实体并使用反射实现我自己的merging方法。这种方法的问题是,它要求我首先查询数据库中的实体,然后更新它,而merge方法应该将其作为一个操作来完成,除非我弄错了。

您可能会问,为什么我只想传递变更集,而不是整个实体。这是因为它允许我发送最少的数据,而且它还明确地指出了用户试图更改的内容,我可以用它来测试用户的权限。

如果不能在nhibernate的范围内做到这一点,你会怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-25 00:11:32

我最终在应用程序中使用了WCF Web API。我使用了一个自定义的媒体格式化程序,包装Json.NET,这让我可以反序列化为泛型和派生类型,这非常棒,而且非常有用。

我有一个ChangeSet对象,它有几个属性,其中最重要的是一个名称-值字典。有了这个设置,我可以定义接受ChangeSet对象的服务操作。然而,我必须显式地删除XmlMediaFormatter。它抛出了错误,因为它不能反序列化如此复杂的对象。

在检查用户更改这些属性的权限后,我从存储库中获取对象,使用反射从更改集中更新属性,并将其保存回存储库。

如果我说实话,效果很好。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7980186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档