Разница между [BsonId] и BsonClassMap.MapIdField - PullRequest
0 голосов
/ 22 апреля 2020

Используя драйвер 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 на эту тему

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...