我一直在跟随Rob Conery的Linq for MongoDB,并且遇到了一个问题。在该示例中,他展示了如何轻松嵌套子对象。对于我目前的实验,我有以下结构。
class Content
{
...
Profile Profile { get; set; }
}
class Profile
{
...
}
这在查看内容项时效果很好。我现在面临的困境是,如果我想将配置文件视为原子对象。就目前而言,似乎我无法直接查询Profile对象,但它与Content结果一起打包。如果我希望它是包容性的,但也能够只查询Profile我觉得我的第一直觉是使Profiles成为顶级对象,然后在Content类下创建一个类似外键的外键来将两者绑定在一起。
对我而言,感觉我正在退回RDBMS实践,感觉我最有可能违背Mongo的精神。你如何看待你需要独立行动的对象,又想要作为另一个对象的子对象?
答案 0 :(得分:0)
没有太多关注Rob的东西,只是在这里大声思考。难道你没有Content对象可以获得的Profile Provider对象,并且有一些方法可以获取你正在寻找的Profile的实例。
这将有利于您正在寻找的关于父/子关系的构图。
再次,在这里大声思考,但我会让内容对象具有IProfileProvider类型的依赖关系,并且我会在需要时将该提供者注入内容对象。这将允许我使用Profile类型组合Content类型,而不显式拥有父/子关系
答案 1 :(得分:0)
我已经决定将配置文件非规范化为一个“较小”的配置文件,只包含内容下的不可变配置文件属性将是一个更好的解决方案。这样可以最大限度地减少我将要进行的读取,同时允许我在必要时查找实际的配置文件对象,以便在配置文件中收集更深层的数据。