WCF DataService更新某些列

时间:2010-07-29 08:33:25

标签: wcf-data-services

我有下表:

SomeName

ID number(8) not null,
Field1 varchar2(50) not null,
Field2 varchar2(50) not null,
Field3 varchar2(50) not null

在此表中,我有以下行:

ID,Field1,Field2,Field3
12,'text1','text2','text3'

现在我想只更新field2(带有ajax请求):

HTTP PUT http://host/DataService/SomeName(12M)
Accept: application/json, text/javascript, */*
Content-Type: application/json; charset=utf-8
{ Field2: 'updated field 2' }

我原以为这会转化为:

update sometable 
set field2 = 'updated field 2' 
where id = '12'

但事实并非如此。相反,我收到一个错误,指出field1和field3不能为空。有一个简单的方法,只有请求中指定的列更新?我是否必须先选择受影响的行才能完成缺失值(出于性能原因我不想要这样做)?我也不想将未受影响的列存储在客户端的隐藏字段中,只是为了让更新生效。我正在使用带有EF4的EFOracleProvider。

任何想法?

1 个答案:

答案 0 :(得分:2)

您需要使用MERGE而不是PUT。 PUT语义是“覆盖”。因此,它首先将所有属性清除为其默认值(默认值由提供程序定义)。然后它应用您在请求中发送的属性。 MERGE语义是“合并”。它不会清除属性,只会应用您在请求中发送的属性。