Драйвер MongoDB C # - как сохранить _id как ObjectId, но сопоставить со свойством string Id?

У меня проблемы с получением моей модели для представления сущностиId свойство в виде строки, но оно автоматически генерируется и представляется внутри MongoDb как нативныйObjectId.

class Account
{
    public string Id { get; set; }
    ...
}

class AccountStore
{
    static AccountStore()
    {
        BsonClassMap.RegisterClassMap<Account>(cm =>
        {
            cm.AutoMap();
            cm.SetIgnoreExtraElements(true);

            // map Id property here
        });
    }

    public void Save(Account account)
    {
        _accounts.Save(account);
    }
}

Для линии// map Id property here В приведенном выше коде я пробовал множество различных способов настройки отображения Id, но ни один из них не сработал. Способы, которые я пробовал, и связанные исключения, которые вызываются, когда я вызываюSave Метод, являются:

// Exception: No IdGenerator found.
cm.IdMemberMap
  .SetRepresentation(BsonType.ObjectId);

// Exception: No IdGenerator found.
cm.IdMemberMap
  .SetRepresentation(BsonType.String);

// Exception: Unable to cast object of type 'MongoDB.Bson.ObjectId' to type 'System.String'.
cm.IdMemberMap
  .SetRepresentation(BsonType.ObjectId)
  .SetIdGenerator(ObjectIdGenerator.Instance);

// Exception: Unable to cast object of type 'MongoDB.Bson.ObjectId' to type 'System.String'.
cm.IdMemberMap
  .SetRepresentation(BsonType.String)
  .SetIdGenerator(ObjectIdGenerator.Instance);

// Exception: Unable to cast object of type 'MongoDB.Bson.ObjectId' to type 'System.String'.
cm.IdMemberMap
  .SetIdGenerator(ObjectIdGenerator.Instance);

Что я делаю неправильно? Я думал, что это стандартный вариант использования для обработки идентификаторов?

Ответы на вопрос(3)

Ваш ответ на вопрос