Используя драйвер C# MongoDB , я пытаюсь понять основное различие между атрибутом [BsonId]
и BsonClassMap.MapIdField
, используемым в BsonClassMap.RegisterClassMap
.
Менее обычно я пытаюсь использовать поле string
модели в качестве поля Id
моего документа. Если я использую атрибут [BsonId]
, все работает нормально:
public class MyModel
{
[BsonId]
public string AStringId{ get; set; }
}
Но если я попытаюсь вместо зарегистрировать его как Id с MapIdField
, тогда у меня будет System.FormatException: Cannot deserialize a 'String' from BsonType 'ObjectId'..
всякий раз, когда Я запрашиваю эту коллекцию ?
BsonClassMap.RegisterClassMap<MyModel>(cm =>
{
cm.MapIdField(m => m.AStringId);
});
Я хотел бы знать, почему возникает эта проблема, и в целом, в чем разница между этими двумя способами использования поля в качестве пользовательского идентификатора?
?: Не RTFD меня, поскольку документация драйвера MongoDB C# ужасно dry на эту тему
Спасибо