Docs Menu
Docs Home
/ / /
C#/.NET
/

Upgrade to Version 3.0

On this page

  • Overview
  • How to Upgrade
  • Version 3.0 Breaking Changes

This page describes the changes you might need to make to your application when you upgrade the .NET/C# Driver to version 3.0.

This page lists the potential breaking changes introduced by the .NET/C# Driver version 3.0. To upgrade the .NET/C# Driver to version 3.0, follow these steps:

  1. Review the Compatibility page to ensure the new driver version is compatible with the MongoDB Server versions your application connects to and the .NET or .NET framework version your application runs on.

  2. If you're using a 2.x version of the .NET/C# Driver, upgrade to v2.30. To do so, follow the v2.x upgrade guide.

  3. Address the breaking changes described in the Version 3.0 Breaking Changes section.

    Example

    If you are upgrading the driver from v2.14 to v3.0, first use the v2.x upgrade guide to upgrade your driver to v2.30. Then, address all breaking changes for v3.0.

  • The driver drops support for MongoDB Server v3.6 and earlier. You must upgrade your MongoDB Server to v4.0 or later.

    To learn how to upgrade your MongoDB Server deployment, see Release Notes in the MongoDB Server manual.

    To learn more about the compatibility between .NET/C# driver versions and MongoDB Server versions, visit the Compatibility page.

  • The classes, methods, and properties in the MongoDB.Driver.Core namespace that were deprecated in v2.30 are marked internal. If the driver provides a replacement for a deprecated class, method, or property, the compiler messages in v2.30 will display it.

  • The methods, properties, and constructors in the MongoDB.Bson namespace that were deprecated in previous versions of the driver have been removed. If the driver provides a replacement for a deprecated method, property, or constructor, the compiler messages in v2.30 will display it.

  • The driver drops support for the MONGODB-CR authentication mechanism. To learn more about configuring authentication in the .NET/C# Driver, see Authentication Mechanisms.

  • The driver replaces the IMongoQueryable interface with the IQueryable interface, following the pattern used by most other LINQ providers. If your application contains references to IMongoQueryable, replace them with IQueryable.

  • The driver removes the ClusterBuilder.ConfigureSdamLogging() method. To configure logging in your application, see the Logging guide.

  • The LINQ2 provider has been removed from this version of the driver. You must use LINQ3 for all LINQ queries.

  • Previous versions of the .NET/C# Driver supported two GUID representation modes. In version 3.0, GuidRepresentationMode.V3 is the only supported mode. This change has the following effects on the driver:

    • The BsonBinaryData(Guid) constructor has been removed. To construct a BsonBinaryData object from a GUID, use the BsonBinaryData.Create(Guid, GuidRepresentation) constructor.

    • The BsonBinaryData.GuidRepresentation property has been removed.

    • You can call the BsonBinaryData.ToGuid() method only on BsonBinaryData objects of subtype 4. If the object has any other subtype, you must call the BsonBinaryData.ToGuid(GuidRepresentation) method and specify the subtype.

    The preceding changes affect your application only if you serialize and deserialize BSON documents directly. If you map your MongoDB documents only to POCOs, the GuidRepresentationMode doesn't affect your application.

    To learn more about serializing GUIDs in the .NET/C# Driver, see the GUIDs page.

  • Exception classes and their related types no longer contain the [Serializable] attribute, and therefore no longer support the Microsoft legacy serialization API. To learn how to use the .NET/C# Driver to serialize objects, see the Serialization guide.

  • TLS 1.0 and 1.1 are no longer supported. You must use TLS 1.2 or higher. To learn more about configuring TLS/SSL in the .NET/C# Driver, see Enable TLS on a Connection.

  • By default, the driver serializes Decimal128 and decimal values as BSON Decimal128 values. In previous versions of the driver, the driver serialized these values as BSON string values by default. To serialize a decimal or Decimal128 value as a string in v3.0, apply the [BsonRepresentation(BsonType.String)] attribute to the field.

    To learn more about specifying BSON types during serialization, see the Custom Serialization section of the POCOs page.

  • By default, the driver serializes DateTimeOffset values as BSON documents. In previous versions of the driver, the driver serialized these values as BSON arrays by default. To serialize a DateTimeOffset value as an array in v3.0, apply the [BsonRepresentation(BsonType.Array)] attribute to the field.

  • The default JSON output mode is Relaxed Extended JSON, a string format based on the JSON standard that describes BSON documents. Relaxed Extended JSON emphasizes readability and interoperability at the expense of type preservation.

    To use a different JSON output mode, create a new JsonWriterSettings object. Set the OutputMode property of this object to a value from the JsonOutputMode enum, then pass the object to the ToJson() method when you serialize your document. The following code example shows how to serialize a BSON document to Strict JSON:

    // Configure JsonWriterSettings
    var jsonWriterSettings = new JsonWriterSettings
    {
    OutputMode = JsonOutputMode.Strict
    };
    // Serialize the document to JSON using the configured settings
    var json = document.ToJson(jsonWriterSettings);
  • The MongoClient constructor accepts only one Credential object instead of an array.

  • To use Amazon Web Services (AWS) authentication, you must add the MongoDB.Driver.Authentication.AWS package to your project and register the authentication provider in your application's bootstrap code. To learn more about using AWS authentication with the .NET/C# Driver, see MONGODB-AWS.

  • If you try to serialize or deserialize a floating-point Infinity or NaN value to an integral representation, the driver throws an OverflowException. To learn more about floating-point Infinity and NaN values, see Double.NaN, Double.PositiveInfinity, and Double.NegativeInfinity. on MSDN.

  • The driver includes the following changes to the BsonValue class:

Back

Upgrade to Version 2.x