使用官方c#驱动程序在mongodb中保存具有双向关系的对象
发布时间:2020-12-15 07:48:10 所属栏目:百科 来源:网络整理
导读:我有两个这样的课: public Class Company{ public IListEmployee Employees;}public Class Employee{ public Company WorkPlace;} 当我想保存类公司的对象时: MongoDatabase Database = MongoServer.GetDatabase("db");var workPlace = new Company();var
我有两个这样的课:
public Class Company { public IList<Employee> Employees; } public Class Employee { public Company WorkPlace; } 当我想保存类公司的对象时: 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而不是对象引用的公司. 这只需要在数据库中进行,你可以在c#代码中扩展你的模型以自动添加对象引用或延迟加载它等(避免选择N 1问题),具体取决于适合的情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |