2011-08-25 1 views
12

私はプロジェクトでORMとしてEntityFrameworkを使用しましたが、私はこの技術の使用に問題はありません。私はEntityFrameworkがプロキシを作成すると聞いた。このORMが作成するプロキシが何であるか知りたいですか?それは何ですか?そして、EFがそれを作成するとき?言い換えれば、ORMのトピックで頻繁に使用される用語「プロキシ」の意味は何か。EntityFrameworkのプロキシの意味は何ですか?

助けが役に立ちます。

ありがとうございました。

+1

EFは常にプロキシを作成しません。これを無効にすることができます。これは、負荷が大きい場合やエンティティをシリアル化する場合(WCFなどで使用する場合など)に行うことができます。 – Kit

+0

私はジョナスの提供を受け入れましたが、私はすべての専門家からより多くを聞きたいと思います。 – saber

答えて

23

ORM世界のプロキシは、自動的に生成されたタイプで、ドメインオブジェクトタイプから継承します。プロキシは、まだデータベースからのデータが入力されていないが、それ自身のIDのみを知っているインスタンスを表します。データベースにマップされたプロパティにアクセスするたびに、プロキシサブクラスはデータベースからのロードを実行し、ロードはクライアントコードに対してトランスペアレントになります。

プロキシは、遅延ロードされた2つのエンティティ間にリレーションシッププロパティがある場合に作成されます。例えば。 user.Addressプロパティにアクセスすると、実際に返されるのはアドレスプロキシオブジェクトです。そのオブジェクトのプロパティにアクセスすると(例:user.Address.StreetName)、Addressオブジェクトがロードされます。

+0

ありがとうございました。 – saber