0

アプリケーションでエンティティ間に 1:1 の多重度を持たせたいシナリオに遭遇しましたが、これを確実にするためにデータベースを変更する方法がわかりません。

Document テーブルと Index テーブルがあり、Document には常に 1 つの Index があり、Index は 1 つの Document にのみ含まれるとします。Document テーブルには IndexID フィールドがあったため、Document エンティティにはそのインデックスへのナビゲーション プロパティがありますが、Index エンティティには Documents というコレクション ナビゲーション プロパティがあります。

DB スキーマを何らかの方法で編集して、DB からモデルを生成するときに、Document エンティティに Index への単一のナビゲーションがあり、Index に Document に戻る単一のナビゲーション プロパティがあるようにするとよいでしょう。そのようなことは可能ですか?

これを実現するには、モデル デザイン サーフェイスでエンティティ モデルまたはその関連付けを編集できるのではないかと考えました。しかし、ある段階でモデルをリロードすると、これと他のものがリセットされるのではないかと心配しています。

1:1 の多重度があることを EF に自動的に認識させるエレガントなソリューションはありますか?

アドバイスをありがとう!

4

1 に答える 1

1

データベースはドキュメントとインデックス間の1:1の関係をモデル化していないため、EFもモデル化しません。1:1を使用するには、ドキュメントとインデックスが主キーを共有する必要があります。これは、いくつかのPK(おそらく自動生成)を使用してドキュメントを定義し、同じタイプのPKを使用してインデックスを定義し、両側のPKが参加するFKも定義することを意味します。これにより、ドキュメントとインデックスの間に1:0..1の関係が適用されます。0..1は、常に最初にドキュメントを挿入する必要があり、その後にインデックスを挿入する必要があるためです(ドキュメントはインデックスなしで数分の1秒の間存続します)。ドキュメントが常にインデックスと一緒に挿入されるようにするのは、アプリケーションロジックの責任です。

于 2011-02-22T13:14:59.073 に答える