RavenDB-删除以前与“冲突”的文档/“冲突”;在URL中

RavenDB-删除以前与“冲突”的文档/“冲突”;在URL中,ravendb,Ravendb,我试图以编程方式删除曾经发生冲突的文档,这些文档不再冲突,但在Raven中仍显示为重复文档 例如,如果我查询一个实体属性的索引,我知道该属性是唯一的,那么我会返回两个文档 带有URL/12345的文档A 带有URL实体/12345/conflicts/54321的文档B 我的目标是删除文档B 将文档A加载到会话中不会引发冲突异常,因为它不再被标记为冲突。我可以通过web UI删除文档B,但目前还不能通过代码删除,因为我只能通过流在临时上下文中看到它 下面是一些示例代码,它解释了我在尝试解决此问题

我试图以编程方式删除曾经发生冲突的文档,这些文档不再冲突,但在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
    为我提供了要查找的文档的密钥