6

私は、MSDN(linklink)にこのコメントを見た:「独立した団体は、多くの場合、 N層との同時実行がより困難になるようなものので、避けるべきであることに注意してください」EF4独立系団体 - なぜそれらを避けるのですか?

私はEF4が新しく、n層のWebアプリケーションを構築しています。これは重要な落とし穴のように聞こえる。誰かが私にこれが何を意味するのか説明できますか?

答えて

7

私はそれが個人的な好みだと思う。元々、EFはindepのみを使用するように作成されました。より古典的なERMアプローチに則っています。しかし、私たちの開発者のほとんどはFKに非常に依存しているため、人生は非常に複雑になっています。そこで、MSはEF4でFKを与えました.FKは従属エンティティのプロパティとしてFKを持つだけでなく、マッピングに埋め込まれるのではなく概念モデルの制約によって定義されます。独立した関連付けでしか定義できない関係がいくつかあります。多対多および一意の外部キーです。 RIAサービスを使用する予定の場合(RIAサービスのようには聞こえません)、RIAはFKの関連付けのみを認識することに注意してください。

独立した関連付けを活用したい場合は、EF4でも絶対に使用できます。彼らは完全にサポートされています。しかし、Jamesが示唆しているように、EFがグラフで動作する方法のために、明示的に行う必要があることを認識するためのトラップがいくつかあります。たとえば、顧客のIDを持っていても、インスタンスを持っていないなど、FKだけを望む場合です。あなたは注文を作成することができますが、その素晴らしいCustomerID FKプロパティがなければ、そこにそのCustomerIDを取得するために余分なジャグリングをしなければなりません。

hth

3

EFの初心者で、EF4から始めるなら、簡単な答えはこれを無視している - あなたは独立系団体よりもむしろForeign Key Associationsを使用しているでしょう。

外部キーの関連付けは、データベース内の外部キーの関係によって行われ、この関係は概念モデルに明示的に記述されています。この種の関連付けはEF4にとって初めてのことであり、独立した団体の問題に従った譲歩であると私は理解しています。

厳密には、ストレージスキーマと概念スキーマ(EFのポイントのようなもの)を分離したい場合、概念的なスキーマが外部キーのようなものをデータベース(つまりストレージ) 概念。以前のバージョンのEFはこのアプローチに従っていました。私たちはこれをIndependent Associationと呼びます。

独立したアソシエーションを、外部キーの知識なしにEFによって追跡されるアソシエーションとして考えます。 EFはこれをまだサポートしていますが、大きな弱点があります。

VS2010のEF4は、あなたが他に指示しない限り、外部キーを使用して外部キー関係を作成します。全体として、これらは期待通りに機能します。まだいくつかの落とし穴があります。カスケード削除の周り。

あなたがEFを学びたいのであれば - 私はこの本をお勧めすることができます:あなたが知りたい

http://learnentityframework.com/learnentityframework/

すべてを、非常に明確に説明しました。

+1

おかげです。しかし、具体的にはn層と並行性に起因する問題は何ですか? – anon

+0

スキーマの違い以外の主な違いは、独立した関連付けを持つエンティティは、概念的なレイヤーに外部キーを公開しないことです。関連付けは、別のオブジェクト内で維持されます。アプリケーションの設計方法によっては、レイヤー間でこの余分な情報を渡す方が複雑です。外部キーの関連付けは、外部キーを直接エンティティに設定することや、公開されている関連するエンティティ/エンティティセットを変更することができるので、作業がはるかに簡単です。 –

+0

私の心の中で「使いにくい」とは必ずしも「避ける」とは言えません。後者は、具体的な落とし穴があることを示唆している。これらの落とし穴に関する記事はありますか? (私はJulia Lermanの本、BTWを持っています) – anon

関連する問題