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.
Added some more unit tests for the Distinct LINQ query operator and for LINQ queries against list elements (as opposed to array elements) and fixed some minor issues discovered as a result.
Implemented the Min and Max LINQ query operators.
Corrected a bunch of InvalidOperationExceptions to NotSupportedExceptions in the LINQ implementation because InvalidOperationException implies the operation could be valid in some other state.
Modified some unit tests that were failing on Mono because Mono words some error messages differently.
Initial implementation of CSHARP-284 and CSHARP-308. Added IsItemOptions named parameter to BsonSerializationOptionsAttribute base class to indicate whether an attribute is intended for the items of a collection instead of for the collection itself. The problem with the current implementation using the new ItemSerializationOptionsWrapper class is that you can have attributes for the collection or for the items but not both.
Skip TestBitmap that only fails in the mono runtime for now.
remove chm file from nuget package. CSHARP-410
New approach to CSHARP-284 and CSHARP-308. Serialization attributes are just another way of setting serialization options and are now processed by the options themselves in the new ApplyAttribute method. Serialization options now have a few new methods: ApplyAttribute, Clone and Freeze. Removed IsItemsOption and ItemSerializationOptionsWrapper; whether an attribute is for the container or for the items is determined by context. Introduced new BsonBaseSerializationOptions class to make implementing serialization options easier. All serializers that use serialization options now return the default serialization options from the new GetDefaultSerializationOptions method. There are minute changes to the unit tests; that is a good thing as it implies these changes are not breaking changes.
Minor renaming and doc comment fixes.
Minor refactoring and standardization of error messages.
Implemented CSHARP-408. Default value for WaitQueueMultiple is now 5.0 and default value for WaitQueueTimeout is now 2 minutes (same values as the Java driver).
Finished work on CSHARP-284/308. Added support for itemSerializationOptions to legacy and generic versions of EnumerableSerializer, QueueSerializer and StackSerializer.
Implemented CSHARP-395. ExtraElements property or field can now be of type IDictionary<string, object> in addition to BsonDocument. Using IDictionary keeps your data model free of dependencies on the driver, and BSON values are mapped to equivalent .NET types when possible.
Implemented support for Enumerable.Any in LINQ where clauses.
Removed partially implemented support for Enumerable.Any with predicate. It wasn't using $elemMatch and full support requires lots more development and testing and most likely support in the server for new forms of $elemMatch (for example support $and and $or inside an $elemMatch). This will be reimplemented in a future release. See CSHARP-413.