リバースエンジニアリング(Scaffolding)
リバースエンジニアリング(スキャフォールディングによる)は、スキーマを通じて利用可能なすべてのテーブルとビューのクラスを自動的に構築することによってOR/M を合理化するプロセスです。このプロセスではCDataContext クラスも作成されます。このクラスはDbContext を拡張し、データソース内のテーブルを示すDbSet プロパティを公開します。
Entity Framework Core ツールのインストール
コンソールアプリでスキャフォールディングを利用している場合は、まずPackage Manager Console(PMC)経由でEF ツールをインストールする必要があります。
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 6.0 //Run this command if using EF Core 6.0
スキャフォールディング
スキャフォールディングは、Visual Studio のPMC を使用して実行されます。スキャフォールドには以下のコマンドを使用できます。
すべてのテーブルをスキャフォールド
次のコマンドを使用して、すべてのテーブルとビューをスキーマからModels フォルダにスキャフォールドします。
Scaffold-DbContext "ANID=AN02000000280;API=PurchaseOrdersBuyerAPI-V1;APIKey=wWVLn7WTAXrIRMAzZ6VnuEj7Ekot5jnU;AuthScheme=OAuthClient;InitiateOAuth=GETANDREFRESH;OAuthClientId=testClient;OAuthClientSecret=testClientSecret;UseSandbox=false;" CData.EntityFrameworkCore.SAPAribaProcurement -OutputDir Models -Context SAPAribaProcurementContext
テーブルのA サブセットをスキャフォールド
限られた範囲のテーブルに対してのみクラスを作成するようにスキャフォールドプロセスを改良することもできます。大量のクラスを生成する必要があるため大規模なスキーマのスキャフォールドに長時間かかる場合、これは特に便利です。これは、PMC のScaffold-DbContext コマンドの最後に、スキャフォールドするテーブル/ビューを指定することによって実現されます。
Scaffold-DbContext "ANID=AN02000000280;API=PurchaseOrdersBuyerAPI-V1;APIKey=wWVLn7WTAXrIRMAzZ6VnuEj7Ekot5jnU;AuthScheme=OAuthClient;InitiateOAuth=GETANDREFRESH;OAuthClientId=testClient;OAuthClientSecret=testClientSecret;UseSandbox=false;" CData.EntityFrameworkCore.SAPAribaProcurement -OutputDir Models -Context SAPAribaProcurementContext -Tables Orders
データモデルの更新
初期生成後に再スキャフォールドして、テーブルクラスを追加してモデルを更新したい場合は、Scaffold-DbContext コマンドに '-Force' 引数を追加するだけです。その後、既存のモデルは変更で上書きされます。