「N層や同時実行性などがより困難になるため、独立した関連付けは避ける必要があることに注意してください。」
私はEF4を初めて使用し、n層Webアプリを構築しています。これは重要な落とし穴のように聞こえます。誰かがこれが何を意味するのか私に説明できますか?
「N層や同時実行性などがより困難になるため、独立した関連付けは避ける必要があることに注意してください。」
私はEF4を初めて使用し、n層Webアプリを構築しています。これは重要な落とし穴のように聞こえます。誰かがこれが何を意味するのか私に説明できますか?
個人的な好みだと思います。もともと、EFは独立したもののみを使用するために作成されました。アソシエーションと、より古典的なERMアプローチとの連携。しかし、私たちの開発者のほとんどはFKに依存しているため、生活が非常に複雑になっています。そのため、MSはEF4でFKを提供しました。これは、FKを依存エンティティのプロパティとして持つだけでなく、関係がマッピングに埋め込まれるのではなく、概念モデルの制約によって定義されることを意味します。独立した関連付けでのみ定義できる関係はまだいくつかあります。多対多の一意の外部キーです。RIAサービスの使用を計画している場合(そのようには聞こえない)、RIAはFKアソシエーションのみを認識することに注意してください。
したがって、独立した関連付けを活用したい場合でも、EF4で絶対に使用できます。それらは完全にサポートされています。しかし、Jamesが示唆しているように、注意すべきトラップがさらにいくつかあります...特にEFがグラフを処理する方法のために、より明示的に行う必要があることです。または、そのFKが必要な場合、たとえば、顧客のIDは持っているが、インスタンスは持っていない場合。注文を作成することはできますが、その優れたCustomerID FKプロパティがないと、そのCustomerIDを取得するために追加のジャグリングを行う必要があります。
hth
EFを初めて使用し、EF4から始める場合、簡単な答えはこれを無視することです。ほぼ確実に、独立アソシエーションではなく外部キーアソシエーションを使用します。
外部キーの関連付けは、データベース内の外部キーの関係によって支えられており、この関係は概念モデルで明示的に記述されています。この種の協会はEF4にとって新しいものであり、人々が独立協会で抱えていた問題に続く譲歩であると私は理解しています。
厳密に言えば、ストレージスキーマと概念スキーマ(EFのポイントの一種)を分離する場合、これらはデータベース(つまりストレージ)の概念であるため、概念スキーマに外部キーなどを認識させたくないでしょう。以前のバージョンのEFはこのアプローチに従い、独立協会と呼ばれるものがあります。
独立アソシエーションは、基礎となる外部キーの知識がなくてもEFによって追跡されるアソシエーションと考えてください。EFはまだこれをサポートしていますが、重大な弱点があります。
VS2010のEF4は、特に指定しない限り、外部キーを使用して外部キー関係を作成します。全体として、これらは期待どおりに機能します。まだいくつかの落とし穴があります-例えば、カスケード削除の周り。
EFを学びたい場合-私はこの本をお勧めできます:
http://learnentityframework.com/learnentityframework/
あなたが知りたいことすべて、非常に明確に説明されています。