Added support for additional operators to VisitBinary and VisitUnary. Changed ExpressionFormatter so it never throws an exception; if something is not fully implemented it at least is formatted as "<XyzExpression>".
LINQ implementation now use custom serializers and serialization options when translating LINQ queries to MongoDB queries. Added GetElementNameAndSerializer and GetItemSerializer to IBsonSerializer. ArraySerializer now implements GetItemSerializer. BsonClassMapSerializer now has a reference to its corresponding BsonClassMap and implements GetElementNameAndSerializer. Fixed inconsistent line endings in BsonClassMap.
Added unit tests to check that all LINQ queries that can be used with an int[] property can also be used with a List<int> property. CollectionGenericSerializer now implements GetItemSerializer. BuildArrayLengthQuery now supports Count property and method.
Implemented MongoDBRefSerializer and MongoDBRef no longer implement IBsonSerializable so that LINQ queries can be written against the properties of MongoDBRef.
Implemented SystemProfileInfoSerializer so that LINQ queries can be written against the system.profile collection. Enhanced TimeSpanSerializer to support TimeSpanSerializationOptions and TimeSpanUnits.
Implemented CSHARP-404. Set AllowDuplicateNames to true when reading a BsonDocument returned from the server because sometimes the server returns documents with duplicate names.
Implemented support for enums in LINQ queries. Fixed BsonMemberMap.GetDefaultValue for enums.
Partial work towards supporting LINQ queries against array elements. Introduced BsonSerializationInfo class as return value of GetItemSerializationInfo and GetMemberSerializationInfo to cut down on out parameters. Added support for array indexing to ExpressionFormatter.
Made the Bson and Driver DLLs CLS compliant (the unit test DLLs don't need to be CLS compliant). Mostly accomplished by making protected fields private and wrapping protected properties around them. Also moved side effects of CurrentBsonType property to new GetCurrentBsonType method and made the CurrentBsonType property side effect free.
Fixed CSHARP-406. Made sure to release higher level locks before calling lower level methods and where possible moved time consuming operations outside of a lock.
More work towards supporting LINQ queries against array elements.
Finished implementing support for LINQ queries against array elements. Added lots more unit tests and made some minor fixes.
Implemented CSHARP-402. Added support in MongoServer for providing admin credentials for operations that require them without having to set them as the default credentials. The admin credentials can either be provided by storing them in the new MongoCredentialsStore or by using new overloads of the relevant methods that now have an adminCredentials parameter. Also removed several admin database related properties and methods from MongoServer (they should be rarely needed and can easily be replaced by passing "admin" as the database name to existing properties and methods).
Simplified optimized implementation of GetHashCode and ToString for classes that can be frozen.
More work on CSHARP-402. Added overloads of RenameCollection that have an adminCredentials parameter.
Implemented IEquatable<MongoDBRef>, !=, ==, Equals and GetHashCode for MongoDBRef.
Implemented IEquatable, !=, ==, Equals and GetHashCode for MongoUser. Tweaked Equals implementation of MongoDBRef.
Standardized implementation of IEquatable, !=, ==, Equals and GetHashCode for SafeMode.
Standardized implementation of IEquatable, !=, ==, Equals and GetHashCode for MongoGridFSFileInfo.
Implemented the Distinct LINQ query operator. Note that because the implementation is based on the Distinct method of MongoCollection the Distinct query operator must be used with a Select that identifies the field whose distinct values are desired.