我正在使用MongoDB將文檔反序列化成C#對象,並且遇到ObjectID字段的問題。這是我得到的錯誤:MongoDB(C#驅動程序)問題反序列化ObjectID字段
缺少MyProject.Data.MyDocument類的屬性'LayoutId'的必需元素'LayoutId'。
哪些(如果它看起來並不奇怪反正)有一定道理,因爲指定了LayoutId領域:
using System;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace MyProject.Data
{
public class MyDocument
{
public override ObjectId Id { get; set; }
[BsonRequired]
public String Name { get; set; }
[BsonRequired]
public ObjectId LayoutId { get; set; }
}
}
而且它在數據庫中填充:
那麼序列化過程的其他方面可以防止這個元素被填充?在特定版本的驅動程序中是否有錯誤?我使用正確的數據類型嗎?
還應當指出的是:
- 這個文件是用來填充數據庫中的該值,所以似乎只有deserialisation是一個問題,系列化的罰款。
- 同一個庫中還有其他文件存在相同的問題。
- 有蒙戈文件/在同一個解決方案,但在不同的庫,它似乎並不具有相同的prolem合同,
如果您正確地從LayoutId中刪除了BsonRequired屬性,問題是否消失? –
@CraigWilson如果我這樣做,那麼該字段保持爲空。因此,在反序列化過程中,BSON字段沒有與類字段匹配。 – Nippysaurus