一般情况下,有没有在的OData这样做一个真正的好办法 - 但不要停止阅读,我会解释原因,并提供了一些建议。
在生产中这样做应该三思而后行的原因是因为插入过程的脆弱性。如果数据库中有两个同名的人,会发生什么情况?如果没有人使用这个名字怎么办?如果你拼错了名字怎么办?你会抛出一个HTTP错误的重复?他们是否需要重试插入? < - 实质上,出现了很多问题,因为用户实际上没有选择特定记录来绑定新记录。如果您事先选择了Person
,并且只需插入新的Residence
并绑定到PersonID
,就可以大大简化此过程。在新的JSON格式的OData,这将是这个样子:
{
"odata.type": "My.User",
"[email protected]": "http://.../MyService.svc/Users('haoche')",
"BillingAddress": {
"odata.type": "My.Address",
"City": "Clinton",
"Line1": "23456 Cleveland St",
"Line2": null,
"State": "TX",
"ZipCode": "98052"
},
"DisplayName": "David Hamilton",
"FavoriteTags": [],
"JoinedAt": "2012-10-05T14:14:43.1229977-07:00",
"LastSeenAt": "2012-10-05T14:14:43.1269991-07:00",
"UserID": "davham"
}
这"[email protected]"
是,你把你链接到该人的ID。如果您未使用新的OData格式,则有效负载将为look like this(请参见示例2)。无耻的插件:这就是为什么你应该使用新的JSON格式:)。
因此,我的主要建议是,我真的会强烈建议您让用户先查看数据,而不是试图将两个操作合并为一个。但是,如果您真的开始进行一项操作,则可以通过服务操作或操作来完成此操作,具体取决于您使用的OData版本。
这绝对回答我的问题。非常感谢 – user1664338