Simply convert your enum to a string when calling Update. For example, using this class:
public enum E { None, A, B };
class C
{
public ObjectId Id { get; set; }
[BsonRepresentation(BsonType.String)]
public E E { get; set; }
}
You could Insert and then Update a document like this:
var document = new C { E = E.A };
collection.Insert(document);
var id = document.Id;
var query = Query.EQ("_id", id);
var update = Update.Set("E", E.B.ToString()); // call ToString
collection.Update(query, update);
In the next version of the C# driver we are introducing typed builders, which will handle serialization for you automatically. Using the current version of typed builders in the master branch your update would look like this:
var query = Query.Build<C>(qb => qb.EQ(c => c.Id, id));
var update = Update<C>.Set(c => c.E, E.B);
collection.Update(query, update);