【问题标题】:RavenDb Constucting complex viewmodel using MultiMap?RavenDb 使用 MultiMap 构建复杂的视图模型?
【发布时间】:2013-09-14 23:50:26
【问题描述】:

假设我在 RavenDb 中有以下文档:

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

public class NextLevel
{
    public string Id { get; set; }
    public string TopLevelId { get; set; }
    public string Name { get; set; }  
}

public class Leaf
{
    public string Id { get; set; }
    public string NextLevelId { get; set; }
    public string Name { get; set; }
}

以及以下视图模型:

public class TopLevelViewModel
{
    public string Id { get; set; }
    public string Name { get; set; }
    public List<NextLeveViewModell> NextLevels { get; set; }
}

public class NextLevelViewModel
{
    public string Id { get; set; }
    public string TopLevelId { get; set; }
    public string Name { get; set; }
    public List<LeafViewModel> Leaves { get; set; }
}

public class LeafViewModel
{
    public string Id { get; set; }
    public string NextLevelId { get; set; }
    public string Name { get; set; }
}

在不大量访问数据库和手动收集/构建结构的情况下构建该视图模型的最佳方法是什么?

我可以为此使用多地图吗?

可能是一个愚蠢的问题,但我已经有一段时间没有使用 RavenDb 了!一直在做 Android / iPhone 开发,所以有点生疏!

【问题讨论】:

    标签: c# nosql ravendb document-database


    【解决方案1】:

    最好的办法是将它们作为单独的文档。一个文档可以包含所有这些。换句话说,您描述为视图模型的结构可以作为您的文档结构直接存储到数据库中。

    当然,这意味着您将始终通过顶级 id 检索文档。如果没有这些节点所代表的额外上下文,很难说这是否合适。

    此外,您似乎已经从 RavenDB Google 群组的this thread 获得了很好的反馈。以后尽量不要交叉发帖。如果你想要一些非常具体的东西,那么 StackOverflow 很棒。如果您需要更多通用方法或想法辩论,请使用 Google 群组。

    如果您可以更具体地编辑您的问题,可能会显示您正在尝试的索引和查询,那么我会相应地更新。

    【讨论】:

    • 我不希望它们被存储为一个巨大的文档,因为需要单独加载它们中的每一个——这纯粹是为了视图模型。我设法在 LINQ 中完成了这一切而不会太脏,而且它的加载速度似乎足够快,所以我对此很满意。感谢您的发帖提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2018-08-24
    • 2012-10-11
    相关资源
    最近更新 更多