回答

0

是的,一旦调用ListItem.DeleteObject method并且通过ClientContext.ExecuteQuery method将查询提交给服务器,与列表项关联的附件就会被删除。

下面的例子演示了如何验证是否附件已被删除:

//First, lets delete list item that contains attachments 
var list = ctx.Web.Lists.GetByTitle(listTitle); 
var item = list.GetItemById(itemId); 
ctx.Load(list.RootFolder, f => f.ServerRelativeUrl); 
item.DeleteObject(); //delete list item operation 
ctx.ExecuteQuery(); 

//Then, let's verify whether associated attachment file(s) have been deleted 
var attachamentRootFolderUrl = string.Format("{0}/Attachments",list.RootFolder.ServerRelativeUrl); 
var attachamentFolderUrl = string.Format("{0}/{1}", attachamentRootFolderUrl, itemId); 
var folder = ctx.Web.GetFolderByServerRelativeUrl(attachamentRootFolderUrl); 
var result = ctx.LoadQuery(folder.Folders.Where(f => f.ServerRelativeUrl == attachamentFolderUrl)); 
ctx.ExecuteQuery(); 
if (!result.Any()) 
{ 
    Console.WriteLine("Attachaments have been deleted."); 
} 
相关问题