2011-09-20 7 views
1

オブジェクトがマテリアライズされた後にObjectContextで呼び出されるイベントObjectMaterializedがあることを認識しています。EntityFrameworkのマテリアライズ時の認識

オブジェクトがの場合、現在が具体化されていることを知る方法はありますか?

オブジェクトは、データベースからリフレッシュすることによって再マテリアライズすることができます。だから私はクラス内にフラグがあるだけで、すでに実現されているかどうかを示すことはできません。

基本的には、特定のプロパティが設定されているときに、それらがデータベースから新鮮な値として設定されているかどうか(つまり、マテリアライズ中)、またはアプリケーションが他の場所から呼び出しているかどうかを確認したいと思います。

答えて

1

ObjectMaterializedエンティティオブジェクトが作成され、クエリまたはロード操作でデータベースからロードされると、イベントは1回だけ発生します。

ObjectStateManagerでオブジェクトの変更を追跡できますが、変更の原因を見つけるのに役立つかどうかわかりません。

1

@BigLの回答で指摘されているように、このイベントは、エンティティがリフレッシュされたときに再び起動されません。マテリアライゼーションは、インスタンスを作成することを意味し、それは1回だけ発生します。リフレッシュは、既存のインスタンスの値のみを更新し、エンティティの状態を設定します。

プロパティが設定されているときに使用するロジックをオンまたはオフにする必要があるフラグを制御できるように、指定したエンティティインスタンスでその操作をトリガーする必要があるため、プロパティをリフレッシュする必要があることは常に知っています。