オブジェクトのカスタマイズ (Entity Framework)

ADO.NET エンティティ フレームワーク は、エンティティ データ モデル (EDM) の概念スキーマ定義言語 (CSDL) ファイルに基づいたオブジェクト レイヤを自動的に生成するツールを提供します。これらのデータ クラスは、アプリケーションの要件に応じてさまざまなレベルでカスタマイズできます。独自のカスタム データ クラスを変更して EDM で使用することもできます。これは、既存のアプリケーションのデータ クラスをアップグレードして エンティティ フレームワーク を使用する場合や、データ クラスの作成方法を詳細に制御する場合に便利です。

部分データ クラスの拡張

EDM で定義された型は、オブジェクト指向プログラミングで使用されるクラスのようにメソッドが関連付けられていません。これらの型に含めることができるのは、EDM で定義されたプロパティだけです。生成された部分データ クラスを拡張して、オブジェクトに機能を追加できます。エンティティ データ モデル ツールによって生成されたデータ クラスは、部分クラスに実装されます。部分クラスによって、クラスの定義が複数のソース ファイルに分割されます。各ソース ファイルにはクラス定義のセクションがあり、アプリケーションのコンパイル時にすべてのセクションが結合されます。詳細については、「Partial (Visual Basic)」または「partial (型) (C# リファレンス)」を参照してください。

部分クラスを有効にすると、生成されたファイルが更新されるときに独自のカスタマイズ処理が失われることを心配することなく、これらのクラスを個別のソース ファイル内のカスタム メソッドとプロパティで拡張できます。詳細については、「生成されたデータ オブジェクトをカスタマイズする方法 (Entity Framework)」を参照してください。

カスタム ビジネス ロジック

生成されたデータ クラスを使用すると、プロパティやリレーションシップの変更など特定の Object Services 操作の際にカスタム ビジネス ロジックを呼び出すことができます。たとえば、このビジネス ロジックには、プロパティが変更されたり SaveChanges が呼び出されたときに、新たに検証やログ作成を行う操作を含めることができます。カスタム ビジネス ロジックは、Object Services によって発生したイベントを処理するか、プロパティが変更されたときに呼び出されるカスタムの部分メソッドを定義することによって呼び出すことができます。

カスタム ビジネス ロジックを呼び出すために使用するイベントおよびメソッドを次に示します。

  • OnPropertyChanging および OnPropertyChanged 部分メソッド
    プロパティが変更されたときに Object Services によって呼び出される生成されたデータ クラス上の部分メソッドのペア。部分データ クラス内のこれらのメソッドを拡張して、プロパティが変更されたときに実行されるコードを実装します。詳細については、「プロパティの変更時にビジネス ロジックを実行する方法 (Entity Framework)」を参照してください。

カスタム データ クラス

メソッドとプロパティを追加して部分クラスを拡張しただけでは十分な柔軟性が得られない場合もあります。アプリケーションでの使用を目的としてデータベースのデータを CLR オブジェクトに読み込むために ADO.NET を使用する既存の .NET Framework アプリケーションを検討してください。これらのオブジェクトには、オブジェクト レイヤで保持する必要のある重要なカスタマイズおよびビジネス ロジックが含まれている場合があります。これらのカスタマイズが原因で、エンティティ フレームワーク の使用を目的としたアプリケーションの移行が制限されることがあります。また、生成された部分クラスを単に拡張するのではなく、エンティティ型を詳細に制御する必要が生じる場合もあります。

EDM でカスタム データ クラスを使用する場合は、EntityObject を継承することをお勧めします。EntityObject を継承できない場合や、フレームワークからの独立性が要求される場合は、EDM 内でカスタム データ クラスを使用するために実装できる Entity Framework のインターフェイスのセットを使用します。詳細については、「カスタム データ クラス インターフェイスの実装 (Entity Framework)」を参照してください。カスタム データ クラスを使用する場合、カスタム データ クラスおよびプロパティに属性を適用して、プロパティを変更する際にオブジェクト コンテキストに通知する必要があります。

EntityObject の継承

生成されたデータ クラスは、EntityObject または ComplexObject を継承します。EDM でカスタム データ クラスを使用する必要がある場合は、データ クラスを変更して、これらの 2 つの基本クラスのどちらかを継承することをお勧めします。この方法では、EntityObject によって提供される変更追跡およびリレーションシップ管理機能をカスタム データ クラスで活用できます。

EntityObject および ComplexObject を継承するときは、以下の点に注意してください。

次の例は、EntityObject を継承するカスタム データ クラス Order を定義します。

<EdmEntityTypeAttribute(NamespaceName:="Microsoft.Samples.Edm", Name:="Order")> _
Public Class Order
    Inherits EntityObject
[EdmEntityTypeAttribute(NamespaceName="Microsoft.Samples.Edm",Name="Order")]
public class Order : EntityObject 

詳細については、「EntityObject および ComplexObject 基本クラスを継承する方法 (Entity Framework)」を参照してください。

このセクションのトピック

参照

その他のリソース

Object Services (Entity Framework)
カスタム オブジェクトの使用 (Entity Framework タスク)