2009-10-10 31 views
3

我正在配置一個ADO.NET DataService。ADO.NET DataService中的WriteReplace和WriteMerge有什麼區別?

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); 
} 

我看了MSDN頁面的EntitySetRights Enumeration但我不能確定EntitySetRights.WriteMerge和EntitySetRights.WriteReplace

之間的區別,我發現下面的說明在Using Microsoft ADO.NET Data Services

  • WriteMerge: 在基於合併的更新的情況下,有效負載需要是實體,只需包含正在修改的屬性。 如果不包含某個屬性,則當前存在於服務器中的值將被保留。示例14顯示了用於更新上一個示例中插入的類別的有效內容。

  • WriteReplace: 對於基於替換的更新,有效負載需要是實體並且應該包含實體的所有屬性(不包括導航屬性)。 如果不包含屬性,則將該值在服務器上重置爲屬性的默認值。 PUT請求的此行爲映射到AtomPub RFC 5023中描述的行爲。示例13顯示了用於更新上一插入示例中插入的類別的有效內容。由於並非所有屬性都包含在有效負載中,因此未指定的屬性將由數據服務重置爲默認值。

回答

1

在ADO.NET Data Services服務器中,我們將WriteMerge定義爲更改實體的單個屬性。 (一個示例是更改員工實例的名字。) 而WriteReplace用另一個實體替換一個實體。 (一個例子是重置所有實體的屬性爲默認值改變一個員工,然後明確設置的屬性。)

隨着WriteMerge,您可以發送與MERGE動詞的請求實體的端點, 與WriteReplace,您可以使用PUT動詞將請求發送到實體的端點。

希望這會有所幫助。