首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WCF-RIA-Services JSON端点上插入实体

如何在WCF-RIA-Services JSON端点上插入实体
EN

Stack Overflow用户
提问于 2011-11-18 08:15:19
回答 2查看 774关注 0票数 0

我的WCF有一个插入方法,如下所示:

代码语言:javascript
复制
public void InsertWidget(WidgetDef widgetDef)

class WidgetDef
{
    [Key]
    int widgetID;
    string title;
    int x;
    int x;
    // there are more properties, but I think you get the idea...
}

要通过JSON端点访问它,我想我需要向url发布一个变更集:

serverURLWidgetService.svc/json/SubmitChanges.

我很确定我的URL是正确的,因为我的请求到达了WidgetService.Initialize方法,但是我在服务器中得到了一个异常--这并不奇怪,因为我不知道请求的内容应该是什么样子。

我的问题:用于插入操作的HTTP请求内容的(JSON)格式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-21 08:09:05

给出的示例插入changeset如下所示:

代码语言:javascript
复制
{"changeSet":[ 
        {"Id":0, 
         "Entity":{"__type":"WidgetDef:#widgetDefNamespace",
                    "widgetId":0, 
                    "title":"the new title", 
                    "x":10, 
                    "y":10, 
                }, 
            "Operation":2    // '2' for insert, '3' for update, '4' for delete 
        } 
    ] 
} 

感谢以下博客文章:http://www.joseph-connolly.com/blog/post/WCF-RIA-Services-jQuery-and-JSON-endpoint-Part-2.aspx

票数 0
EN

Stack Overflow用户

发布于 2016-07-13 01:42:59

这是一个非常晚的答案,但以防其他人再次遇到这些问题;重要的是,__type是实体中的第一个键。

我遇到了一些异常,比如:This DomainService does not support operation 'Update' for entity 'Object',它表明Domain无法解析实体的类型,因此无法找到适当的处理程序。

研究人员发现了这篇关于http://www.blog.yumasoft.com/node/108主题的博客,其中包含了解决方案。

我想指出,这种行为违反了JSON规范(参见:https://stackoverflow.com/a/5525820/1395343)。

一个可能的解决办法是使用replace确保__type在正确的位置结束。我不相信这是个好主意,但确实有效。

代码语言:javascript
复制
var entityChange = {};
entityChange.Id = 0;
entityChange.Operation = 3;
entityChange.Entity = {'key': 'Something that changed'};

var payload = JSON.stringify({ changeSet: [entityChange]});

// This is not an ideal way of doing this.
payload = payload.replace('"Entity":{', '"Entity":{"__type":"TypeName:#Namespace.Stuff",');
return $.ajax({
    url: "...Web.svc/JSON/SubmitChanges",
    method: "POST",
    data: payload,
    contentType: "application/json",
    dataType: "json",
    processData: false,
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8179504

复制
相关文章

相似问题

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