RavenDB模型设计一对多

时间:2012-12-24 04:42:58

标签: c# ravendb

如果我有一个包含列表的对象。我是否应该将该列表存储在与列表中的对象或存储相同的文档中,并带有引用。或者我应该将它存储在两者中,也不是说照片列表对象的大小会增加,感谢任何建议。

public class Album
{
    public string Name { get; set; }

    //Should I store this inside of the album document?
    public List<Photo> Photos {get; set; } 
}

public class Photo
{
    public string Title { get; set; }
}

2 个答案:

答案 0 :(得分:4)

将列表存储在包含的对象/文档中。除非你有一个非常令人信服的理由否则。

答案 1 :(得分:4)

要么是可以接受的。 Alonso是对的,等到你有令人信服的理由把它分开。

令人信服的原因示例是,如果您经常需要访问其余的相册信息,并且照片列表非常大。另一个例子是,如果您想要在相册上进行版本跟踪,而不是在照片列表上进行版本跟踪。

第三种可能性是将每张照片存储在一个单独的文档中,并引用相册ID而不是保留列表。

public class Photo
{
    public string Id { get; set; }
    public string Title { get; set; }
    public string AlbumId { get; set; }
}

这实际上取决于哪种方案更适合您的场景。没有一个正确的方法。