3

我想知道在多个位置使用对象时如何处理。给定以下代码(只是示例代码):-

 public class Group
    {          
        public ObjectId Id { get; set; }
        public string Name { get; set; }
        public List<Person> People { get; set; }
        public List<Meeting> Meetings { get; set; }
    }

    public class Meeting
    {          
        public string Subject { get; set; }
        public List<Person> Attendees { get; set; }
    }

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

如果我将组存储为 mongodb 文档,它将序列化所有人员和会议。但是,可以在人员列表中引用相同的人员对象并作为会议的与会者。但是,一旦序列化,它们就会成为单独的对象。如何在人员列表和会议列表中保持相同的“人员”对象?

或者有更好的方法来建模吗?可以做的一件事是将“人员”放在单独的文档中并嵌入/引用它?然后开始创建越来越多的单独集合,理想情况下我想在单个文档中维护引用。

或者在一个文档中,我应该给每个人加上一个主列表,然后只在“会议”中存储 ID 列表,并使用某种辅助方法从主列表中解析 ID?可以做,但是有点丑。

4

1 回答 1

2

我不是 MongoDB 专家,但我认为在这种情况下,这些项目中的每一个都应该是一个单独的集合,并带有引用以获得您所追求的结果。

会议具有组 ID 和个人 ID 与会者列表。组具有个人 ID 成员(人)的列表。如果一个人只能属于一个组,那么他们可以有一个组 ID。

一旦它们进入数据库,您现有设计的唯一选择就是检查名称是否相等,正如您所说,这可以完成,但似乎不是正确的方法。

本质上,您正在使用嵌入式关系模型以及如何在“组”和“会议”中存储“人员”,但如果您想要两者都使用相同的“人员”对象,那么您需要使用与会者或两者的引用。这对我来说似乎是最简单的方法,而不是“对抗”标准行为。

于 2013-08-12T01:55:33.830 回答