gpt4 book ai didi

c# - 如何处理 MongoDB 中的 C# 对象引用?

转载 作者:可可西里 更新时间:2023-11-01 09:45:23 25 4
gpt4 key购买 nike

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

 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 文档,它将序列化所有人员和 session 。然而,同一个 Person 对象可以在人员列表中引用并作为 session 的与会者。然而,一旦序列化,它们就变成了独立的对象。我如何才能确保人员列表和 session 列表中都存在相同的“人员”对象?

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

或者在一份文件中,我应该识别每个人并拥有一个主列表,然后只将 ID 列表存储在“ session ”中,并使用某种辅助方法从主列表中解析 ID?可以做,就是有点丑。

最佳答案

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

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

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

从本质上讲,您使用的是嵌入式关系模型以及如何在“群组”和“ session ”中存储“人员”,但如果您希望两者使用相同的“人员”对象,则需要对与会者或两者使用引用。这对我来说似乎是最简单的方法,同时又不“反对”标准行为。

关于c# - 如何处理 MongoDB 中的 C# 对象引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18178363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com