【发布时间】:2011-12-17 09:25:36
【问题描述】:
我遇到过一种情况,将我的域模型的特定部分表示为关系会更好。我阅读了 MongoDB 中关于 database references 的部分,并了解您可以通过提供对外部集合中各种文档的 $ref 引用的 JSON 数组来提供对多个文档的引用。
我看到的所有在代码中添加对外部文档的引用的示例都只针对单个文档,并且它们创建了 MongoDBRef 类型的公共属性。在我看来,这种方法有很多不必要的开销,但它也不清楚如何存储对多个文档的引用。
如果想在 Mongo 中提供外文文档之间的一对多关系,是否需要提供包含 MongoDBRef 对象的集合属性?是否可以在我的 C# 代码中坚持使用标准实体对象的集合并使用 BsonClassMap 将其映射到 Mongo 文档?
下面是一个简单的类,代表我目前拥有的模型。它似乎正确地保存了文档和引用,但我不喜欢公开 MongoDBRef 对象的公共集合以及为使用 Person 类的任何人添加新文档所需的开销。
如果重要的话,我正在使用 MongoDB 2.0 和他们的 C# 驱动程序。
// This is how my class currently looks
public class Person
{
public string Name { get; set; }
public List<MongoDBRef> Vehicles { get; private set; }
public Person()
{
Vehicles = new List<MongoDBRef>();
}
}
// This is what I want my class to look like
public class Person
{
public string Name { get; set; }
public List<Vehicle> Vehicles { get; private set; }
public Person()
{
Vehicles = new List<Vehicle>();
}
}
【问题讨论】: