我正在尝试同时创建实体和两个子实体的实例.
如果我将以下JSON发布到/ user_objects资源,它很乐意创建父user_object实体和链接的User_object_attribute实体.唯一的问题是我似乎无法扩展结果集以包含新的user_object_attribute所以我有效地拥有user_object的最新版本但我必须从OData服务读取,即另一个服务器命中以便检索user_object_attributes.
在返回时,我有一个整齐地进入子user_object_attribute对象的id,但是如果这个孩子有另一个服务器端生成的字段如created_date会怎么样?然后我还要再次点击OData回购?
我尝试了正确的$ expand查询?$ expand = user_objects_attributes,当创建成功时,我仍然没有返回扩展的结果集.
如果有可能,有人会有任何想法吗?或者是因为它不是因为只有这样才能返回所有子user_object_attributes?
{
"annotator_id":1,
"content_type":"content_type",
"created_date":"2013-02-15T17:20:09.191",
"guid":"GUID",
"size_kb":100,
"title":"Title",
"updated_date":null,
"url":"URL",
"user_object_id":0,
"user_objects_attributes":[
{
"attribute_id":0,
"name":"name191",
"user_object_id":0,
"value":"value191"
}
]
}
Run Code Online (Sandbox Code Playgroud)
谢谢,马克.
在这里查看 OData V3 规范:
在版本 1.0 和版本 2.0 中,如果插入完全成功,服务器必须返回带有 201(已创建)状态代码的响应以及符合 InsertEntity 请求(第 2.2.7.1.1 节)中指定的语法的响应正文。服务器执行完所有特定于服务器的数据处理规则(验证等)后,响应正文必须包含插入资源的值。在将资源插入服务器之前,服务器可以更改从客户端接收到的资源值。
在版本 3.0 中,响应可能具有 204 状态代码,如 [RFC2616] 中所指定,基于 InsertEntity 请求上的客户端首选项(请参阅 Prefer(第 2.2.5.9 节))。
不太清楚服务器应该做什么...仅返回顶级创建的实体,或者该实体及其所有扩展链接。
我并不惊讶 $expand 对 POST (或任何 CUD 请求)没有影响。如果它不是查询,WCF DS 可能会忽略它。根据规范,这可能是正确的。
坦率地说,我认为使用 WCF DS Server 您无法获得任何其他回报。在 V3 中,您要么得到 201 与您的实体(仅),要么得到 204 无内容(如果您指定标头表示您不需要任何内容)。
这是否符合 OData 标准...不完全确定:-)。无论如何,我认为您目前无法在 WCF DS 堆栈上获得您想要的东西。
| 归档时间: |
|
| 查看次数: |
3179 次 |
| 最近记录: |