title: Difference between decorating a property in C# with BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId
body: <p>Am new to mongodb and am liking how easy it is not to worry about schema stuff, I have a question suppose you want an Id property in mongo and mongo uses <code>ObjectId</code> to denote property Id's, so far i see you can have or decorate an Id as follows,</p>
  
  <pre><code>public ObjectId Id {get; set;}
  
  //or
  
  [BsonId]
  public string Id {get; set;}
  
  //or
  
  [BsonId]
  [BsonRepresentation(BsonType.ObjectId)]
  public string Id {get; set;}
  </code></pre>
  
  <p>Can anyone explain to me why most people choose the last type, and whats going on and how the flexibility helps. Thanks?</p>