gpt4 book ai didi

c# - 使用官方 c# 驱动程序在 mongodb 中保存具有双向关系的对象

转载 作者:IT老高 更新时间:2023-10-28 13:21:58 25 4
gpt4 key购买 nike

我有两个这样的类(class):

public Class Company
{
public IList<Employee> Employees;
}

public Class Employee
{
public Company WorkPlace;
}

当我想保存 Company 类的对象时:

MongoDatabase Database = MongoServer.GetDatabase("db");

var workPlace = new Company();

var employee = new Employee { WorkPalce = workPlace}
workPlace.Employees = new List<Employee>{ employee };

Database.GetCollection<Company>("company").Save(workPlace);

将抛出 StackOverFlow 异常。

最佳答案

这是因为你有一个由类相互引用形成的循环,显然驱动程序没有能力处理这个问题,我不相信它应该这样做。

您需要决定如何在数据库中对这些数据建模。
如果您有两个集合,一个是公司,一个是员工,那么在数据级别,您应该只包含引用的 ID。

如果您只有一个公司集合,那么您只需更改员工类以使用 id 而不是对象引用来引用回公司。

不过,这只需要在数据库中进行,您可以在 c# 代码中扩展您的模型,以自动添加对象引用或延迟加载它等(避免选择 N+1 问题),具体取决于适合的内容情况。

关于c# - 使用官方 c# 驱动程序在 mongodb 中保存具有双向关系的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461996/

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