Raven DB补丁请求未在启动时运行

时间:2016-07-14 14:28:12

标签: ravendb

我目前有一个ravenDB数据库,其模型具有我一直在使用的一组特定字段。我意识到我需要添加一两个字段,并成功使用ravenDB的补丁请求一次修补我的数据库中的文档,以便在所有现有文档上初始化这些字段。我想再次添加另一个字段,但我无法再次运行补丁代码来更新我的文档。我想知道是否有人可以告诉我是否有任何文档或方法在部署时检查数据库并查看模型是否相同,如果不修补那些不是但是保留单独的那些并确保在更新现有模型不会重置为修补补丁的内容。

private void updateDb(IDocumentStore store)
    {
        store.DatabaseCommands.UpdateByIndex("Interviews_ByCandidateInterviewAndDate", 
            new IndexQuery{
                Query = "Candidate:"
            }, 
            new []{
                new PatchRequest{
                    Type = PatchCommandType.Set,
                    Name = "IsArchived",
                    Value = true
                },
                new PatchRequest{
                    Type = PatchCommandType.Set,
                    Name = "ArchiveDate",
                    Value = null
                },
                new PatchRequest{
                    Type = PatchCommandType.Set,
                    Name = "TestingField",
                    Value = 14
                }
            },
            new BulkOperationOptions
            {
                AllowStale = false
            }
        );
    }

前两个补丁请求经过并显示在数据库中,但有一点我看不到的是,如果我再次运行此补丁以将第三个字段放入模型中,它是否会更改已存在的所有值在数据库中前两个为true和null,或者它会让它们保持原样,更重要的是,我无法让这个代码再次运行。

任何指向正确方向的人都将不胜感激!谢谢。

1 个答案:

答案 0 :(得分:0)

您查询错误:

            Query = "Candidate:"

应该没有结果(查询无效)。

使用:

            Query = "Candidate:*"