MongoDB를 사용하여 문서를 C# 개체로 deserialize하고 ObjectID 필드에 문제가 있습니다. 이것은 내가 점점 오전 오류입니다 : 속성에 대한 'LayoutId'MongoDB (C# Driver)는 ObjectID 필드 deserialising을 발행합니다.
필수 요소없는 클래스 MyProject.Data.MyDocument의 '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; } } }
그리고 데이타베이스 내의 인구 :
를 (그것이 어쨌든 이상한 보이지 않는 경우)
어떤는 LayoutId 필드가 지정되어 있기 때문에 이해하지 따라서 직렬화 프로세스의 다른 측면에서이 요소가 채워지는 것을 막을 수 있습니까? 특정 버전의 드라이버에 버그가 있습니까? 올바른 데이터 유형을 사용하고 있습니까?
- 이 문서가 데이터베이스에 그 값을 채우는 데 사용되는, 그래서 단지 deserialisation이 문제가 직렬화가 좋은 것 같습니다 :
또한 주목해야한다.
- 동일한 라이브러리에 동일한 문제점이있는 다른 문서가 있습니다.
- 내가이 오류를 재현 할 수없는
LayoutId에서 BsonRequired 특성을 올바르게 제거하면 문제가 해결됩니까? –
@CraigWilson 내가 그렇게하면 필드는 null로 남습니다. 따라서 deserialisation 프로세스의 어딘가에서 BSON 필드가 Field 클래스와 일치하지 않습니다. – Nippysaurus