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的使用。工作很好。 –