Docs Menu

バージョン 3.0 にアップグレード

このページでは、 .NET/ C#ドライバーをバージョン 3.0 にアップグレードするときにアプリケーションに加える必要がある変更について説明します。

このページでは、 .NET/ C#ドライバー バージョン 3.0 によって導入される可能性のある重大な変更をリストします。.NET/ C#ドライバーをバージョン 3.0 にアップグレードするには、次の手順に従います。

  1. [ 互換性 ] ページを確認して、新しいドライバー バージョンが、アプリケーションが接続するMongoDB Serverのバージョン およびアプリケーションが実行される.NETまたは.NETフレームワークのバージョンと互換性があることを確認します。

  2. .NET/ C#ドライバーの 2 .x バージョンを使用している場合は、 v 2.30 にアップグレードします。これを行うには、 v2 .x アップグレードガイドに従います。

  3. バージョン3.0 の重大な変更 セクションで説明されている重大な変更に対処します。

    ドライバーを v2.14 から v3.0 にアップグレードする場合は、まず v2 .xドライバーを v 2.30 にアップグレードするためのアップグレードガイド。次に、v 3.0 のすべての重大な変更に対処します。

  • ドライバーはMongoDB Server v 3.6 以前のサポートを削除します。MongoDB Serverは v 4.0 以降にアップグレードする必要があります。

    MongoDB Server 配置をアップグレードする方法については、MongoDB Server マニュアルのリリースノートを参照してください。

    .NET/C# ドライバーのバージョンと MongoDB Server のバージョンの互換性の詳細については、互換性ページをご覧ください。

  • ドライバーは、 .NET Core 2 .x および.NET Framework 4.6 のサポートを削除します。.NET Core 3 .x 以降、または.NET Framework 4.7.2 以降にアップグレードする必要があります。

    .NET/ C#ドライバーのバージョンと.NETのバージョンの互換性の詳細については、 互換性 ページをご覧ください。

  • このドライバーでは、レガシーv1 .x を実装する mongoshardr NuGetパッケージが削除されます。ドライバー バージョン 2 .x のAPIv 1 .x を使用している場合APIにある場合は、新しいAPIに移行する必要があります。

  • v で非推奨となった 名前空間内のクラス、メソッド、プロパティはMongoDB.Driver.Core2.30 internalとマークされています。ドライバーが非推奨のクラス、メソッド、またはプロパティの代替を提供する場合、 v 2.30 のコンパイラー メッセージにそれが表示されます。

  • ドライバーの以前のバージョンで非推奨だった MongoDB.Bson名前空間内のメソッド、プロパティ、コンストラクターが削除されました。ドライバーが非推奨のメソッド、プロパティ、またはコンストラクターの代替を提供する場合、v 2.30 のコンパイラー メッセージにそれが表示されます。

  • ドライバーは MONGODB-CR認証メカニズムのサポートを削除します。.NET/ C#ドライバーで認証を構成する方法の詳細については、「 認証メカニズム 」を参照してください。

  • ドライバーは、他のほとんどの LINQ プロバイダーで使用されるパターンに従って、IMongoQueryable インターフェースを IQueryable インターフェースに置き換えます。アプリケーションに IMongoQueryable への参照が含まれている場合は、IQueryable に置き換えます。

  • ドライバーは ClusterBuilder.ConfigureSdamLogging() メソッドを削除します。アプリケーションでログを構成するには 、「 ログガイド」を参照してください。

  • LINQ 2 プロバイダーはこのバージョンのドライバーから削除されました。すべての LINQ クエリに LINQ 3 を使用する必要があります。

    クライアント側のプロジェクションを使用するクエリでは、デフォルトで ExpressionNotSupportedException エラーがスローされます。 クライアント側のプロジェクションを有効にするには、TranslationOptionsオブジェクトの EnableClientSideProjectionsプロパティをtrue に設定します。 この TranslationOptionsオブジェクトを AggregateOptions または FindOptionsオブジェクトに渡して 1 つのクエリでクライアント側のプロジェクションを有効にするか、MongoClientSettingsオブジェクトに渡してアプリケーション内のすべてのクエリに対してクライアント側のプロジェクションを有効にします。

  • .NET/ C#ドライバーの以前のバージョンでは、2 つの GUID 表現モードがサポートされていました。 バージョン 3.0 では、サポートされているモードは GuidRepresentationMode.V3 のみです。この変更は、ドライバーに次の影響を与えます。

    • BsonBinaryData(Guid) コンストラクターが削除されました。GUID から BsonBinaryDataオブジェクトを構築するには、BsonBinaryData.Create(Guid, GuidRepresentation) コンストラクタを使用します。

    • BsonBinaryData.GuidRepresentationプロパティが削除されました。

    • BsonBinaryData.ToGuid() メソッドは、サブタイプ 4 の BsonBinaryData オブジェクトでのみ呼び出しできます。オブジェクトに他のサブタイプがある場合は、BsonBinaryData.ToGuid(GuidRepresentation) メソッドを呼び出してサブタイプを指定する必要があります。

    • BsonTypeMapperクラスを使用する GUID 変換が削除されました。 GUID 値をBSONに変換するには、BsonBinaryData(<GUID>, GuidRepresentation.Standard) コンストラクターを使用します。

    上記の変更は、 BSONドキュメントを直接直列化および逆直列化する場合にのみアプリケーションに影響します。 MongoDBドキュメントを POCO のみにマッピングする場合、GuidRepresentationMode はアプリケーションに影響を与えません。

    .NET/ C#ドライバーで GUID を直列化する方法について詳しくは、「 GUID のページ 」を参照してください。

  • 例外クラスとその関連型には、[Serializable] 属性が含まれなくなったため、 Microsoftレガシー直列化APIのサポートが終了しました。.NET/ C#ドライバーを使用してオブジェクトを直列化する方法については、 「直列化ガイド」 を参照してください。

  • TLS 1.0 と 1.1 はサポートされなくなりました。TLS 1.2 以上を使用する必要があります。.NET/ C#ドライバーで TLS/SSL を構成する方法の詳細については、「 接続で TLS を有効にする 」を参照してください。

  • デフォルトでは 、ドライバーは Decimal128decimal 値をBSON Decimal128 値として直列化します。ドライバーの以前のバージョンでは、ドライバーはこれらの値をデフォルトでBSON string 値として直列化していました。decimal または Decimal128 の値を string として v 3.0 で直列化するには、フィールドに [BsonRepresentation(BsonType.String)] 属性を適用します。

    BSON types直列化化 中にBSON型を指定する方法の詳細については、 POCO ページの「 カスタム直列化 」セクションを参照してください。

  • デフォルトでは 、ドライバーは DateTimeOffset 値をBSONドキュメントとして直列化します。以前のバージョンのドライバーでは、ドライバーはこれらの値をデフォルトでBSON配列として直列化していました。 v 3.0 で DateTimeOffset 値を配列として直列化するには、フィールドに [BsonRepresentation(BsonType.Array)] 属性を適用します。

  • デフォルトのJSON出力モードは Relaxed Extended JSONで、 BSONドキュメントを記述するJSON標準に基づく string形式。 緩和型拡張JSONは、型の保存を犠牲にして、読みやすさと相互運用性を重視します。

    別のJSON出力モードを使用するには、新しい JsonWriterSettingsオブジェクトを作成します。このオブジェクトの OutputModeプロパティを JsonOutputMode列挙の値に設定し、ドキュメントを直列化するときにそのオブジェクトを ToJson() メソッドに渡します。次のコード例は、 BSONドキュメントを 厳密なJSONに直列化する方法を示しています。

    // Configure JsonWriterSettings
    var jsonWriterSettings = new JsonWriterSettings
    {
    OutputMode = JsonOutputMode.Strict
    };
    // Serialize the document to JSON using the configured settings
    var json = document.ToJson(jsonWriterSettings);
  • MongoClient コンストラクターは、配列ではなく 1 つの Credentialオブジェクトのみを受け入れます。

  • Amazon Web Services (Amazon Web Services)の認証を使用するには、プロジェクトに MongoDB.Driver.Authentication.AWSパッケージを追加し、アプリケーションのブートストラップ コードに認証プロバイダを登録する必要があります。 .NET/ C#ドライバーでAmazon Web Services認証を使用する方法の詳細については、 「 Amazon Web Services ID とアクセス管理 」を参照してください。

  • 使用中の暗号化を使用するには、プロジェクトに MongoDB.Driver.Encryptionパッケージを追加し、アプリケーションのブートストラップ コードに暗号化メカニズムを登録する必要があります。.NET/ C#ドライバーで使用中の使用中の暗号化する方法の詳細については、 MongoDB Serverマニュアルの「 使用中の使用中の暗号化」を参照してください。

  • 浮動小数点の Infinity または NaN の値を整数表現に直列化または逆直列化しようとすると、ドライバーは OverflowException をスローします。浮動小数点のInfinityNaN 値の詳細については、Double. NaN、Double.PosativeInfinity、Double.NativeInfinity を参照してください。(MSDN の場合)。

  • ドライバーには、BsonValueクラスに対する次の変更が含まれています。

  • ドライバーは MongoClient.Cluster から個々のクラスター イベントを削除します。 クラスター イベントをリッスンするには、 ClusterBuilder.Subscribe() メソッドを呼び出します。

  • コレクション内のいずれかの型でスカラー弁別子が使用されている場合、コレクションに対して次のいずれかのアクションを実行すると、ドライバーは例外をスローします。

    • 次の例のように、Aggregate().OfType<T>() メソッドを呼び出します。

      collection.Aggregate().OfType<T>()
    • 次の例のように、Aggregate().Match(item => item is T) メソッドを呼び出します。

      collection.Aggregate().Match(item => item is T)

    コレクションで前述のメソッドのいずれかを使用するには、コレクション内の各クラスに階層弁別子を適用します。 その方法については、「 多形オブジェクト 」ページを参照してください。

    あるいは、各アイテムのタイプを異なる方法で確認することもできます。 例は、次の例のように、Where() メソッドを呼び出し、アイテムのタイプと検索しているタイプを比較する式を渡すことができます。

    collection.AsQueryable().Where(item => item.GetType() == typeof(T));

    型弁別子の詳細については、「 多形オブジェクト 」を参照してください。

  • ドライバーは、継承を使用することで、拡張用に設計されていない一部の型を埋め込みました。 これには、次の変更が含まれます。

    • ドライバーはすべての具象シリアライザーを処理します。 カスタム シリアライザーを実装するには、IBsonSerializer インターフェースを実装します。

    • ドライバーは MongoClientMongoDatabaseMongoCollection クラスをシードします。 IMongoClientIMongoDatabaseIMongoCollection インターフェースを直接使用することを推奨します。

  • ドライバーでは、アプリケーションが GuidSerializer クラスと ObjectSerializer クラスを使用して GUID を直列化する方法を明示的に構成する必要があります。 新しいアプリケーションを構築する.NET/ C#ドライバー ユーザーは、グローバル GuidSerializer を登録して実装できます。 古いアプリケーションを使用しているユーザーは、グローバル GuidSerializer を実装するときに、すべての GUIDs が同じ方法で直列化されていることを確認することをお勧めします。 グローバル GuidSerializer を登録せずに、ケースごとに GUID直列化を構成することもできます。

    GUID直列化の詳細については、「 GUIDガイド 」を参照してください。