Diferencia entre decorar una propiedad en C # con BsonRepresentation (BsonType.ObjectId) vs BsonId vs ObjectId

Soy nuevo en mongodb y me gusta lo fácil que es no preocuparse por las cosas del esquema, tengo una pregunta, supongamos que desea una propiedad Id en mongo y mongo usesObjectId para denotar Id de propiedad, hasta ahora veo que puede tener o decorar un Id de la siguiente manera,

public ObjectId Id {get; set;}

//or

[BsonId]
public string Id {get; set;}

//or

[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id {get; set;}

¿Alguien puede explicarme por qué la mayoría de la gente elige el último tipo, qué está pasando y cómo ayuda la flexibilidad? ¿Gracias?

Respuestas a la pregunta(1)

Su respuesta a la pregunta