nosql - RavenDB - 修补非规范化引用集合

标签 nosql ravendb

假设我有以下域:

public class Movie
{
    public string Id { get; set; }
    public string Name { get; set; }
    public List<ActorReference> Actors { get; set; }
}

public class Actor
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Biography { get; set; }
    public string AnotherDetailProperty { get; set; }
}

public class ActorReference
{
    public string Id { get; set; }
    public string Name { get; set; }
}

现在,如果 Actor 的名字发生变化,我想确保所有引用的电影也会更新。因此,我首先创建一个索引,让我查询所有涉及特定 Actor 的电影:
public class Movies_ByActorId : AbstractIndexCreationTask<Movie>
{
    public Movies_ByActorId()
    {
        Map = movies => from movie in movies
                        from actor in movie.Actors
                        select new { ActorId = actor.Id };
    }
}

好的,现在我想触发补丁命令...
Session.Advanced.DatabaseCommands.UpdateByIndex(
    "Movies/ByActorId",
    new IndexQuery
    {
        Query = "ActorId:" + actorWhoseNameHasChanged.Id
    },
    new[]
    {
        new PatchRequest
        {
            Type = PatchCommandType.Modify,
            Name = "Actors",
            Nested = new[]
            {
                // WHAT TO DO HERE?
            }
        }
    },
    allowStale: false);

有人可以帮我完成上面的这个代码块,因为我完全不知道,我如何只能更新代表已更改 Actor 的非规范化引用的名称。

恐怕 RavenDB 不支持这种补丁请求,我需要手动加载和存储所有电影,出于性能原因,我绝对希望避免这种情况。

最佳答案

RavenDB 不支持进行基于标准的修补。
您可以在没有非规范化引用的情况下解决您的问题,并在读取时使用 include

关于nosql - RavenDB - 修补非规范化引用集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7139569/

相关文章:

orientdb - OrientDB 真的符合 ACID 吗?

c# - 获取 ASP.NET MVC 4 中按名称给定的方法的属性

asp.net-core - 在 RavenDB .net 中将 IDocumentStore 设置为静态变量

c# - 当使用 2 层架构将 UseEmbeddedHttpServer 设置为 true 时,如何使我的 RavenDB 应用程序正确执行?

nosql - neo4j 入门

database - 如果我没有任何文档,我无法在 ravendb 中创建一个集合

java - Java 全文搜索解决方案?

java - 使用 Java API 在 DynamoDB 中查询

ssl - RavenDB "Connection Was Reset"- 启用 SSL 后

nosql - NoSQL 中的多对多关系