2017-02-16 56 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)的查詢,那會給我引用的對象,我期待對於。

相關問題