在嘗試更新串列 @ MongoDB 時,我收到以下錯誤:
"Unable to determine the serialization information for o => o."
Order.cs * (洗掉了測驗屬性):
public class Order
{
[BsonId]
[BsonRepresentation(BsonType.String)]
public int Id { get; set; }
public string Number { get; set; }
}
插入:
public async Task SyncAsync(List<Order> orders)
{
var bulkUpdateModel = new List<WriteModel<Order>>();
foreach (var order in orders)
{
var filter = Builders<Order>.Filter.Eq(o => o.Id, order.Id);
var updateDefinition = Builders<Order>.Update.Set(o => o, order);
var upsertOne = new UpdateOneModel<Order>(filter, updateDefinition) { IsUpsert = true };
bulkUpdateModel.Add(upsertOne);
}
await _orders.BulkWriteAsync(bulkUpdateModel);
}
uj5u.com熱心網友回復:
你可以試試ReplaceOneModel:
var upsertOne = new ReplaceOneModel<Order>(filter, order)
{
IsUpsert = true
};
uj5u.com熱心網友回復:
解決方案
我發現您無法更新整個檔案,只能更新您在 updateDefinition 中設定的某些屬性...
不作業:
var updateDefinition = Builders<Order>.Update.Set(o => o, order);
在職的:
var updateDefinition = Builders<Order>.Update.Set(o => o.Whatever, order.Whatever);
我不想使用反射,所以切換到替換,可以更新整個檔案。
例子
public async Task SyncAsync(List<Order> orders)
{
var bulkUpdateModel = new List<WriteModel<Order>>();
foreach (var order in orders)
{
var filter = Builders<Order>.Filter.Eq(o => o, order);
var writeModel = new ReplaceOneModel<Order>(filter, order) { IsUpsert = true };
bulkUpdateModel.Add(writeModel);
}
await _orders.BulkWriteAsync(bulkUpdateModel);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/313592.html
上一篇:如何訪問從s3存盤桶復制到.NET代碼中的彈性beantalk的檔案?
下一篇:使用oracle引數系結變數
