Sharepoint客户端对象模型:加载/更新/删除方法的使用

Sharepoint客户端对象模型:加载/更新/删除方法的使用,sharepoint,sharepoint-apps,sharepoint-clientobject,Sharepoint,Sharepoint Apps,Sharepoint Clientobject,有人能解释一下这两种方法的区别或原因吗?例如,对于ListItemsListItem.RefreshLoad()?有区别吗 为什么ClientContext没有等效的.Update或Delete方法 什么时候我必须调用ClientContext.ExecuteQuery方法 ListItem item = ...; // 1. Is there a difference between ClientContext.Load(ListItem) and ListItem.RefreshLoad(

有人能解释一下这两种方法的区别或原因吗?例如,对于ListItems
ListItem.RefreshLoad()
?有区别吗

为什么ClientContext没有等效的
.Update
Delete
方法

什么时候我必须调用
ClientContext.ExecuteQuery
方法

ListItem item = ...;

// 1. Is there a difference between ClientContext.Load(ListItem) and ListItem.RefreshLoad()?
clientContext.Load(item);
item.RefreshLoad();

// 2. Why aren't there methods like ClientContext.Update(...) or ClientContext.Delete(...)?
item.Update();
item.DeleteObject();

// 3. When is the ClientContext.ExecuteQuery needed (load / update / delete)?
 clientContext.ExecuteQuery();

谢谢大家!

要实现的主要事情是,客户机对象模型从一开始就被设计为异步的

将客户端上下文对象视为发送指令和接收数据的容器。
.Load()
方法对指令进行排队,例如
.Load(item)
对指令进行排队以检索有关给定列表项的数据

.ExecuteQuery()
.ExecuteQueryAsync()
方法发送那些排队的指令并从服务器检索结果

这些操作与您可以对实际SharePoint对象(如列表和列表项)执行的操作不同。考虑:

当您在客户机对象模型中创建一个
ListItem
对象时,您所做的只是在本地内存中创建一个对象——您还没有向服务器发送任何东西来实际创建列表中的项目。
ListItem
对象只是一个占位符,您对它所做的任何操作(例如在上面的示例中创建它并设置它的字段值)都会存储为需要执行的指令


当您将该对象加载到客户端上下文对象(通过
clientContext.load(newListItem)
时,您只是将这些指令输入到客户端上下文中。一旦运行
clientContext.ExecuteQuery()
,这些指令被执行,占位符对象被从服务器返回的任何实际相关数据填充。

要实现的主要事情是,客户机对象模型被设计为从一开始就是异步的

将客户端上下文对象视为发送指令和接收数据的容器。
.Load()
方法对指令进行排队,例如
.Load(item)
对指令进行排队以检索有关给定列表项的数据

.ExecuteQuery()
.ExecuteQueryAsync()
方法发送那些排队的指令并从服务器检索结果

<>这些操作不同于您可以针对实际SharePoint对象执行的操作,例如列表和列表项。 在客户端对象模型中创建
ListItem
对象时,您所做的只是在本地内存中创建一个对象——您还没有向服务器发送任何东西来实际创建列表中的项目。
ListItem
对象只是一个占位符,您可以对其执行任何操作(例如,在上面的示例中创建它并设置它的字段值)存储为需要执行的指令


当您将该对象加载到客户端上下文对象(通过
clientContext.load(newListItem)
时,您只是将这些指令输入到客户端上下文中。一旦运行
clientContext.ExecuteQuery()
,这些指令将执行,占位符对象将填充从服务器返回的任何实际相关数据。

这可能会有帮助,如果您没有看到-->这可能会有帮助,如果您没有看到-->
ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
ListItem newListItem = targetList.AddItem(itemCreateInfo);
newListItem["Title"] = "New Announcement";
newListItem["Body"] = "Hello World!";
newListItem.Update(); 

clientContext.Load(newListItem);
clientContext.ExecuteQuery();  // only at this point is the item actually created