Overview
このセクションでは、プロバイダーを新しいバージョンにアップグレードするときにアプリケーションに加える必要がある重要な変更を特定できます。
アップグレードする前に、次のアクションを実行してください。
重大な変更
重大な変更とは、特定のバージョンのプロバイダー以降の規則または動作の変更です。 このタイプの変更では、プロバイダーをアップグレードする前に処理されない場合、アプリケーションが正常に動作しなくなる可能性があります。
このセクションの重大な変更は、それを導入したプロバイダーのバージョンによって分類されます。 プロバイダーのバージョンをアップグレードするときは、現在のバージョンとアップグレードのバージョン間のすべての重大な変更に対処してください。 例えば、プロバイダーを v 8.0から v 8.5 800} にアップグレードする場合、 v 8.0以降のバージョンからの重大な変更にはすべて対処します。 v 8.5にリストされているすべての を含みます。
バージョン8.30.0 重大な変更
FS コア プロバイダーのバージョン 8.3.0 では、代替のBSON表現で構成された null 可能なプロパティの処理を修正する重大な変更が導入されています。以前のバージョンでは、[BsonRepresentation]
属性または HasBsonRepresentation()
fluent APIによって設定された構成は適用されませんでした。
この不一致は、次の 2 つの方法のいずれかの方法でアクションを実行できます。
代替のBSON表現の使用が重要でない場合は、起動する前にアプリケーションから構成を削除してください。
あるいは、影響を受ける要素を新しい表現にアップデートすることもできます。
updateMany
アップグレード プロセスの一環として、影響を受けるMongoDBコレクションごとに メソッドを使用して、影響を受ける null 可能なプロパティまたは要素をBSON操作に書き換えます。$convert
例、次のコードに示すように、
people
という名前のコレクション内のdateOfBirth
要素をBSONdate
からBSONint
に変換できます。db.people.updateMany( { dateOfBirth: {$type: "date" } }, [ { $set: { dateOfBirth: { $convert: { input: "$dateOfBirth", to: "int", onNull: null } } } } ] )
バージョン8.2.0 重大な変更
FS コア プロバイダーのバージョン 8.2.0 では、重大な変更は直接導入されません。ただし、基礎の.NET/ C#ドライバーは、v 3.0 で重大な影響を与える可能性のある変更を多く導入しています。のリリースは、アプリケーションに影響する可能性があります。 .NET/ C#ドライバーの v の重大な変更の詳細については、3.0 3バージョン0 へのアップグレード を参照してください。 .NET/ C#ドライバーのドキュメントの ガイドを参照してください。
バージョン8.1.0 重大な変更
すべての変更を MongoDB トランザクションとして実行するように FS コア プロバイダーを更新しました。 アプリケーションが v 5.0より前の MongoDB Server を使用している場合、 または がレプリカセット内で実行されない場合は、アプリケーションに次の変更を加える必要があります。
アプリケーションが v 5.0より前のバージョンの MongoDB Server 用に構成されている場合、 MongoDB Server v 5.0以降にアップグレードする必要があります。
アプリケーションがスタンドアロン サーバーで実行される場合は、スタンドアロン サーバーを単一インスタンスのレプリカセットに再構成する必要があります。 スタンドアロン サーバーを再構成する方法の詳細については、 mongodMongoDB Serverマニュアルの「 スタンドアロンの自己管理型 をレプリカセットに変換する 」を参照してください。
アプリケーションがコンテナ環境で実行されている場合は、単一インスタンスのレプリカセット コンテナが使用可能な場合、それに切り替えます。
EnsureCreated()
EnsureCreatedAsync()
トランザクション中のスナップショットの問題を回避するには、コレクションまたはデータベースを暗黙的に作成するのではなく、アプリケーションの起動時に メソッドまたは メソッドを呼び出します。注意
アプリケーションが共有クラスターで実行中されている場合、 または
EnsureCreated()
EnsureCreatedAsync()
メソッドを呼び出すとエラーがスローされます。無料クラスターと 共有クラスターで実行中中のアプリケーションは、これらのメソッドを呼び出しないでください。トランザクションとの楽観的な同時実行性を確保したくない場合は、アプリケーション設定中に
Database.AutoTransactionBehavior = AutoTrasactionBehavior.Never
DbContext
サブクラスに を設定することで自動トランザクションを無効にできます。デフォルトの GUID ストレージ形式を
CSharpLegacy
バイナリ形式からStandard
形式に変更しました。Standard
形式ではない既存の GUID がデータベースに含まれている場合は、Standard
形式に変換することをお勧めします。CamelCaseElementNameConvention
は、クラス名ではなくプロパティ名に基づいて、所有されるエンティティの大文字と小文字を変換します。 アプリケーションでCamelCaseElementNameConvention
が使用される場合、データの大文字と小文字が変更される可能性があります。
このバージョンの重大な変更の詳細については、Github のプロバイダーリポジトリの「 重大な変更 」セクションを参照してください。