3
Q
刪除所有附件
A
回答
3
這將遍歷數據庫中的所有附件,並一次刪除一個附件。
private void DeleteAllAttachments(IDocumentStore store)
{
while (true)
{
var header = store.DatabaseCommands
.GetAttachmentHeadersStartingWith("", 0, 1)
.FirstOrDefault();
if (header == null) return;
store.DatabaseCommands.DeleteAttachment(header.Key, null);
}
}
您可以通過採用更大的頁面大小來優化它,但由於您無論如何刪除,它可能無關緊要。
1
據我所知,沒有內置的選項來獲取數據庫的所有附件。但您可以執行以下操作:
var client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:8080");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
HttpResponseMessage response = client.GetAsync("databases/YourDatabaseName/static").Result;
response.EnsureSuccessStatusCode();
var files = response.Content.ReadAsAsync<IList<AttachmentInformation>>().Result;
foreach (var fileDetail in files)
{
store.DatabaseCommands.DeleteAttachment(fileDetail.Key, null);
}
要使用此功能,您需要以下POCO。並參考Microsoft.AspNet.WebApi.Client v5。如果您只是執行ReadAsString並自己或使用其他json解析器解析響應內容,則可以刪除此要求。
public class AttachmentInformation
{
/// <summary>
/// Gets or sets the size.
/// </summary>
/// <value>The size.</value>
public int Size { get; set; }
/// <summary>
/// Gets or sets the key.
/// </summary>
/// <value>The key.</value>
public string Key { get; set; }
/// <summary>
/// Gets or sets the metadata.
/// </summary>
/// <value>The metadata.</value>
public object Metadata { get; set; }
/// <summary>
/// Gets or sets the etag.
/// </summary>
/// <value>The etag.</value>
public Guid Etag { get; set; }
}
相關問題
- 1. 刪除所有文件附加信息?
- 2. jquery刪除所有附加元素
- 3. 刪除所附的html
- 4. NSHomeDirectory刪除所有文件
- 5. 刪除所有.ica文件
- 6. 如何刪除在Outlook中的所有附件
- 7. 刪除附件文件
- 8. 回形針沒有刪除附件
- 9. 用php刪除mime附件
- 10. MVCMailer SendAsync並刪除附件
- 11. 動態刪除附件?
- 12. VBA - Outlook不刪除附件
- 13. Wordpress刪除附件功能
- 14. 刪除文件,只有當所有的可刪除 - 饒無辜
- 15. 刪除所有,但
- 16. 刪除所有列
- 17. 刪除所有行
- 18. 刪除所有django.contrib.messages
- 19. NSFetchedResultsController刪除所有
- 20. 刪除文件夾內的所有文件,但刪除最後?
- 21. 刪除所有行除了
- 22. vba腳本從Outlook保存所有附件(PDF)然後刪除電子郵件
- 23. Git刪除所有刪除的元素
- 24. 所有數據有刪除
- 25. 刪除文件夾中的所有文件,排除某些文件被刪除
- 26. 刪除所有交換文件?
- 27. OwnCloud刪除所有文件提示
- 28. 空目錄(刪除所有文件)
- 29. 從Primefaces組件刪除所有樣式?
- 30. 刪除文件中的所有內容
不錯的答案,但是函數* does *存在於'GetAttachmentHeadersStartingWith'中,如果您希望它們全部可以使用空字符串。儘管如此,很高興看到一些開箱即用的思想和HTTP API的使用。工作很好。 –