我正在配置ADO.NET DataService。

public static void InitializeService(IDataServiceConfiguration config)
{
    // config.UseVerboseErrors = true;
    // TODO: set rules to indicate which entity sets and service operations are
    //       visible, updatable, etc.
    // Examples:
    config.SetEntitySetAccessRule("User", EntitySetRights.WriteMerge);
    config.SetEntitySetAccessRule("User", EntitySetRights.WriteReplace);
}


我已经阅读了EntitySetRights Enumeration的MSDN页面,但无法识别EntitySetRights.WriteMerge和EntitySetRights.WriteReplace之间的区别

我在Using Microsoft ADO.NET Data Services找到了以下解释


WriteMerge:
对于基于合并的更新,有效负载需要是一个实体,并且仅需要包含要修改的属性。如果不包含属性,则将保留服务器中当前存在的值。示例14显示了用于更新在先前示例中插入的类别的有效负载。
WriteReplace:
对于基于替换的更新,有效负载必须是一个实体,并且应包含该实体的所有属性(不包括导航属性)。如果不包括属性,则在服务器上将该值重置为该属性的默认值。 PUT请求的此行为映射到AtomPub RFC 5023中描述的行为。示例13显示了用于更新在先前插入示例中插入的类别的有效负载。由于并非所有属性都包含在有效负载中,因此未指定的属性将由数据服务重置为其默认值。

最佳答案

在ADO.NET数据服务服务器中,我们将WriteMerge定义为更改实体的各个属性。
(一个示例是更改员工实例的名字。)
而WriteReplace则是用另一个实体替换一个实体。
(例如,通过将实体的所有属性重置为默认值,然后显式设置属性来更改员工)。

使用WriteMerge,您可以将带有MERGE动词的请求发送到实体的端点,
使用WriteReplace,您可以将带有PUT动词的请求发送到实体的端点。

希望这可以帮助。

10-05 23:05