Controlador MongoDB C #: ¿cómo almacenar _id como ObjectId pero asignar a la propiedad Id de cadena?

Tengo problemas para que mi modelo represente el de una entidadId propiedad como una cadena, pero que sea generada automáticamente y representada internamente por MongoDb como nativoObjectId.

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);
    }
}

Para la linea// map Id property here en el código anterior, he probado numerosas formas diferentes de configurar la asignación de Id y ninguna ha funcionado. Las formas en que lo intenté y las excepciones asociadas que se generan cuando llamo alSave método, son:

// 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);

¿Qué estoy haciendo mal? ¿Pensé que este era un caso de uso estándar para el manejo de id?

Respuestas a la pregunta(3)

Su respuesta a la pregunta