Przypuszczam, że wystarczy oznaczyć swój identyfikator bloga za pomocą BsonId
(i wstaw id samodzielnie) atrybut:
public class Blog
{
[BsonId]
public String Id {get;set;}
public String Title{get;set;}
}
I wszystko powinno być w porządku. Problem polegał na tym, że nie zaznaczono, jakie pole będzie Mongodb _id, a wygenerowane przez sterownik pole _id o typie ObjectId. A kiedy kierowca próbuje zdeserializować go z powrotem, nie może przekonwertować ObjectId na String.
Pełny przykład:
MongoCollection collection = md.GetCollection<Blog>("blog");
var blog = new Blog(){Id = ObjectId.GenerateNewId().ToString(),
Title = "First Blog"};
collection .Insert(blog);
MongoCursor<Blog> cursor = collection.FindAllAs<Blog>();
cursor.SetLimit(5);
var list = cursor.ToList();