2016-05-21 141 views
1

它在此處說明(http://mongodb.github.io/mongo-csharp-driver/2.2/reference/bson/mapping/#id-generators)驅動程序應該使用其中一個內置ID生成器來爲屬性ID,ID,_id(約定)生成新ID。MongoDb 2.0 C#驅動程序不爲插入的ID創建值

我有

public string Id { get;set; } 

以及自動ID生成是不會發生的模型。插入的文檔的ID爲空。從我的倉庫代碼

段:

public void Save<TEntity>(TEntity item) where TEntity : class, new() 
    { 
     var collection = GetCollection<TEntity>(); 
     collection.InsertOne(item); 
    } 
+0

請包括一個可驗證的示例代碼,以確保我們都在同一頁面上。澄清一下,你的MongoDB和驅動版本是什麼?你的帖子標題說它的2.0,而引用鏈接指向2.2 – Saleem

+0

MongoDB 3.2.6和Mongo驅動程序2.2.3 – mare

+0

我的代碼很簡單,非常簡單的模型與簡單的CRUD代碼,見上面 – mare

回答

1

經過進一步的故障排除我得到了這個工作。

不得不將屬性[BsonId]設置爲StringObjectIdGenerator爲Id屬性。

[BsonId(IdGenerator = typeof(StringObjectIdGenerator))] 

http://mongodb.github.io/mongo-csharp-driver/2.2/reference/bson/mapping/#id-generators的文檔是當然誤導或不夠清晰

一些標識發電機常用 的ID類型自動使用:GuidGenerator用於一個GUID ObjectIdGenerator使用 爲ObjectId StringObjectIdGenerator用於字符串 ,表示爲ObjectId

我已打開MongoDb JIRA跟蹤器的一個問題,如果他們提供任何洞察,我會在這裏發佈他們的回覆。

相關問題