RavenDB-删除以前与“冲突”的文档/“冲突”;在URL中
我试图以编程方式删除曾经发生冲突的文档,这些文档不再冲突,但在Raven中仍显示为重复文档 例如,如果我查询一个实体属性的索引,我知道该属性是唯一的,那么我会返回两个文档RavenDB-删除以前与“冲突”的文档/“冲突”;在URL中,ravendb,Ravendb,我试图以编程方式删除曾经发生冲突的文档,这些文档不再冲突,但在Raven中仍显示为重复文档 例如,如果我查询一个实体属性的索引,我知道该属性是唯一的,那么我会返回两个文档 带有URL/12345的文档A 带有URL实体/12345/conflicts/54321的文档B 我的目标是删除文档B 将文档A加载到会话中不会引发冲突异常,因为它不再被标记为冲突。我可以通过web UI删除文档B,但目前还不能通过代码删除,因为我只能通过流在临时上下文中看到它 下面是一些示例代码,它解释了我在尝试解决此问题
using (var enumerator = session.Advanced.Stream(query))
{
while (enumerator.MoveNext()))
{
var entity = enumerator.Current.Document;
// This attempt to get the id returns null
var id = session.Advanced.GetDocumentId(entity);
// Throws InvalidOperationException
var url = session.Advanced.GetDocumentUrl(entity);
// Returns null, so can’t use session to delete
session.Load<TEntity>(entity);
// Does nothing, with string ID of entity
session.Advanced.Defer(new DeleteCommandData { Key = entity.Id.ToString() });
// Does nothing
session.Advanced.DocumentStore.DatabaseCommands.Delete(entity.Id.ToString(), null);
}
session.SaveChanges();
}
使用(var枚举器=session.Advanced.Stream(查询))
{
while(枚举数.MoveNext())
{
var entity=enumerator.Current.Document;
//此获取id的尝试返回null
var id=session.Advanced.GetDocumentId(实体);
//抛出无效操作异常
var url=session.Advanced.GetDocumentUrl(实体);
//返回null,因此无法使用会话删除
会话加载(实体);
//不执行任何操作,字符串ID为实体
Defer(新的DeleteCommandData{Key=entity.Id.ToString()});
//无所事事
session.Advanced.DocumentStore.DatabaseCommands.Delete(entity.Id.ToString(),null);
}
session.SaveChanges();
}
任何帮助都将受到感激 我发现,在上面的示例中,使用
枚举器.Current.Key
为我提供了要查找的文档的密钥