当我有一个包含文档列表的根文档并保存/插入时,根文档总是从 MongoDB 获取一个 ID,但列表中的文档没有,它们与ObjectId.Empty
. 我不确定我做错了什么还是这是故意的行为?
这是我正在尝试做的一个例子:给定类:
public class Foo
{
public ObjectId Id { get; set; }
public string Name { get; set; }
public IList<Bar> Bars { get; set; }
}
public class Bar
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}
与工厂:
public class Factory
{
public Foo CreateFoo(string name)
{
return new Foo {
Id = new ObjectId(),
Name = name,
Bars = new List<Bar>()
};
}
public Bar CreateBar(string name)
{
return new Bar {
Id = new ObjectId(),
Name = name
};
}
}
当我运行这样的示例时:
public class Program
{
static void Main(string[] args)
{
var client = new MongoClient("mongodb://localhost");
var server = client.GetServer();
var database = server.GetDatabase("Example1");
if (!database.CollectionExists("foos")) database.CreateCollection("foos");
var factory = new Factory();
var foo1 = factory.CreateFoo("first");
foo1.Bars.Add(factory.CreateBar("bar"));
var collection = database.GetCollection("foos");
collection.Insert(foo1);
var foo2 = factory.CreateFoo("second");
collection.Insert(foo2);
foo2.Bars.Add(factory.CreateBar("bar"));
collection.Save(foo2);
}
}
foo1
和foo2
get都是_id
由 MongoDB 生成的,但都没有Bars
。所有的Bars
仍然有ObjectId.Empty
。现在一个简单的解决方案是更新工厂以使用ObjectId.GenerateNewId()
,但我会觉得它是从数据库生成的更舒服。有人对此有任何见解吗?难道我做错了什么?这甚至可能吗?感谢您的输入。