3
我正在使用下面的代碼來使用C#驅動程序進行批量插入。我有一個唯一的索引,如果我嘗試插入一個不唯一的記錄,我希望它自動失敗。批量插入使用ContinueOnError
即使我有InsertFlags.ContinueOnError
設置,我仍然收到InsertBatch
調用錯誤。如果我吞下下面所示的錯誤,則一切正常。但是這當然感覺不對。
var mio = new MongoInsertOptions {Flags = InsertFlags.ContinueOnError};
// newImages is a list of POCO objects
try
{
_db.GetCollection("Images").InsertBatch(newImages, mio);
}
catch (WriteConcernException)
{
}
這將有助於看到您的POCO聲明。可以在驅動程序階段引發異常(即,如果其中一個對象沒有序列化),並且只有在大量插入請求到達mongo數據庫本身時,纔會考慮'ContinueOnError'的WriteConcern。您也可以嘗試逐個迭代您的圖像,並查看是否以插入方式失敗。 –
另外,您使用的是哪個版本的csharp驅動程序?我發現這個錯誤https://jira.mongodb.org/browse/CSHARP-674,如果它們有空值,可能會導致序列化失敗,這可能在到達數據庫之前觸發驅動程序異常。 –
我正在執行一個非常簡單的實驗。我批量插入一組POCO對象,每個對象都有一個GUID。該集合在該GUID上具有唯一索引。第一次插入沒問題。我嘗試再次批量插入完全相同的一組POCO,並且我得到異常。我期望它忽略插入,並不會引發異常。 –