所以,我有这两个模型,第二个模型应该包含对第一个模型的引用。
模型1
public class Model1 {
[BsonId]
public ObjectId Model1Id { get; set; }
///etc
}
模型2
public class Model2 {
[BsonId]
public ObjectId Model2Id { get; set; }
public ObjectId Model1Id { get; set; }
///etc
}
现在,当我尝试保存第一个,然后更新第二个引用时,引用在数据库中显示为ObjectId("000000000000000000000000")
这就是我在做的事情:
ctx.Model1.InsertOne(model1); //after this a real ObjectId is saved to the DB
foreach (var m2 in model2)
{
m2.Model1Id = model1.Model1Id; //this shows as ObjectId("000000000000000000000000")
}
ctx.Model2.InsertMany(model2);
我该怎么做?感谢
答案 0 :(得分:0)
行。我找到了一个方法。我不确定这是不是最好的方法。但是,也许其他人可以在将来发布更好的答案。
除了ObjectId
之外,似乎无法在BSON
内保存多个BsonId
(如果此声明为假,请有人纠正我)。因此,要与One-to-One
创建此One-to-Many
或mongocsharpdriver
关系,我将Model2.Model1Id
更改为string
而不是ObjectId
。
所以工作流程如下:
我致电ObjectId.GenerateNewId()
在其中一个模型中创建新的[BsonID]
。
我通过调用更新了对第二个的引用。 ModelID.toString()
现在,如果我想找到另一个文档中引用的文档之一,我只需要获取字符串并创建一个调用new ObjectId(string)
的查询,这将为我提供引用的对象我正在寻找。