C# driver not deserializing a property

I’m upgrading from using BsonDocument everywhere, to using deserialization on POCO objects.

Overall the objects are populated with correct values, but i’m having a problem with the code below, values on the EventReferenceEntry.Id property - which are always 0.

Perhaps worth knowing, is that if i remove “BsonIgnoreExtraElements” attribute from the EventReferenceEntry class, i get an error "Element ‘i’ does not match any field or property of class "

I’ve also tried setting EventReferenceEntry.Id to Int64 and UInt64, but no difference.

The driver is version 2.7.3, i tried it with a fresh installation of the latest version, but it’s the same problem.

The database is a series of events. An event has:
_id = Int64
_t = Int32 (the type of the event)
_r = an array of objects (references to other objects, entities or events, that are relevant.)

C# Code of the POCO objects

	public class EventEntry
		public ulong Id { get; set; }

		public int Type { get; set; }

		public DateTime Time { get { return new DateTime((long)Id, DateTimeKind.Utc); } }

		public List<EventReferenceEntry> References { get; set; }


	public class EventReferenceEntry
		public UInt64 Id { get; set; }

		public string Name { get; set; }

		public int Asset { get; set; }

		public EventReferenceEntry()

An example database entry

"_id" : NumberLong(637684658186492532),
"_t" : 1058,
"_r" : [ 
        "n" : "p",
        "i" : NumberLong(637662370697662760)
        "n" : "a",
        "a" : 1202
        "n" : "o",
        "i" : NumberLong(637684655676255124),
        "a" : 2934

Found the problem and solution.

A property in the class (in my case EventReferenceEntry) cannot be named “Id” or “id”, I guess that a property named that is assumed to be bound to the _id bson property. It can however be named “ID” or “Ident” or anything else, and the value gets assigned.