2017-02-16 60 views
2

所以,我有这两个模型,第二个应该包含对第一个的引用。在MongoDB |中添加对其他文档的引用mongocsharpdriver

模型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

好的。我找到了一个方法。我不确定这是否是最好的方法。但是,也许别人可以在将来发布更好的答案。

除了BsonId之外,似乎没有办法在一个BSON以内保存多于一个ObjectId(如果此声明为错误,请有人纠正我)。所以,要创建One-to-OneOne-to-Manymongocsharpdriver的关系,我将Model2.Model1Id更改为string而不是ObjectId

所以工作流程如下:

我叫ObjectId.GenerateNewId()的机型之一,以创建一个新的[BsonID]

我通过调用更新了对第二个参考的引用。 ModelID.toString()

现在,如果我想找到其他文档中引用的文档之一,我只需要获取字符串并创建一个调用new ObjectId(string)的查询,那会给我引用的对象,我期待对于。

相关问题