C# UpdateAysnc抛出“错误”;字段';id';“未被承认”;错误
我有以下代码,用C#编写,使用.NETCore2.0控制台应用程序。我使用了这些相同的变量作为加法函数,一切都很好C# UpdateAysnc抛出“错误”;字段';id';“未被承认”;错误,c#,.net-core,microsoft-graph-api,C#,.net Core,Microsoft Graph Api,我有以下代码,用C#编写,使用.NETCore2.0控制台应用程序。我使用了这些相同的变量作为加法函数,一切都很好 GetAsync起作用并收回列表项。调用UpdateAsync时,我从Microsoft Graph获得一个错误返回: Messsage: Field 'id' is not recognied HResult: -2146233088 request-id: 0682cf9f-c828-43f1-bc9e-acb21631a58e date: 01/11/2017 7:28:38
GetAsync
起作用并收回列表项。调用UpdateAsync
时,我从Microsoft Graph获得一个错误返回:
Messsage: Field 'id' is not recognied
HResult: -2146233088
request-id: 0682cf9f-c828-43f1-bc9e-acb21631a58e
date: 01/11/2017 7:28:38 Ticks 636450912000000000
请注意,“recognized”是返回的实际拼写
这是我正在使用的代码:
var listItemId=SharePointId到InsiteMapping.GetValueOrDefault(siteRecord.InSiteID);
var graphClient=GetGraphClient();
var listItem=await graphClient.Sites[siteId]。列出[listId]。项[listItemId]。请求()
.Expand(i=>i.Fields)
.GetAsync();
listItem.Fields.AdditionalData[“Title”]=siteRecord.Title;
尝试
{
var request=graphClient.Sites[siteId]。list[listId]。Items[listItemId]。request();
var result=wait request.UpdateAsync(listItem);
WriteLine($“在{result.WebUrl}更新的列表项”);
}
捕获(例外e)
{
WriteLine($“更新{sitecord.Title}时出错”);
控制台写入线(e);
}
为感兴趣的人更新的代码
var result = await graphClient.Sites[siteId].Lists[listId].Items[listItemId].Request().UpdateAsync(
new ListItem(){
Fields = new FieldValueSet{
AdditionalData = new Dictionary<string, object>{
{"Title", "A change title"}
}
}
}
);
var result=wait-graphClient.Sites[siteId]。list[listId]。Items[listItemId]。Request().updateSync(
新列表项(){
字段=新字段值集{
AdditionalData=新字典{
{“标题”,“更改标题”}
}
}
}
);
此错误的原因是您正在将整个列表项
对象传递给updateSync
。由于id
属性是只读的,因此返回错误
为了向ListItem
发送更新,您应该传入一个新的ListItem
对象,其中只包含您希望更改的属性:
var result = await graphClient
.Sites["siteId"]
.Lists["listId"]
.Items["listItemId"]
.Request()
.UpdateAsync(new ListItem()
{
// Properties you wish to change
});
谢谢,就这样。当我看到新的ListItem时,我想我会自动假设它将创建一个新的ListItem。超级常见的错误。当试图为无状态RESTAPI设计面向对象的包装器时,这是一个挑战。对象也不总是按照您期望的方式运行。