私はこれに対する答えを見つけるために何時間も費やしました、そして空っぽになりました。
私は.NETとMVCにまったく慣れていません。MvcMusicStoreチュートリアルを完了し、より複雑なプロジェクトに取り組み始めましたが、同様のプロジェクトです。私はこの分野での私の経験と知識のレベルが低いことを説明するためにこれを言うだけであり、どんな反応もこれを考慮に入れることができることを願っています。
とにかく、私が抱えている問題は、2つの属性「TeamId1」と「TeamId2」を持つ1つのテーブル「Fixtures」があり、これらは両方とも別のテーブル「Team」にマップされていることです。
私が欲しいのは、各フィクスチャにTeam1とTeam2の両方のチームデータも含めることです。私はこれまでObjectQueryのIncludeメソッドを使用して、同様の操作を問題なく実行してきました。
ただし、これを行ったとき、.NET、MVC、Entity Frameworkなどは、満足のいくものではなかったことがわかりました。多くの実験の結果、外部キーが参照するテーブルと同じ名前である場合にのみ機能することがわかりました。基本的に、私の属性には「TeamId」という名前を付ける必要があります。そうしないと、機能しません。このテーブルにマップする必要のある別の属性がなければ、これは問題にはなりません。明らかに、テーブルに同じ名前の2つの属性を含めることはできません。だから私は立ち往生しています。
「TeamId」以外の属性名を使用してテーブルにマップできると想定することしかできませんが、これを行う方法を説明する手順/以前の投稿/ドキュメントが見つかりません。
フィクスチャデータを分割し、フィクスチャテーブルを作成してから、チームIDやスコアなどを保持する別のテーブルを作成する可能性を検討しましたが、各フィクスチャに2つ以上のチームが存在しないことを考えると、これは少しやり過ぎのようです。だから私はこれをプランBと呼んでいます。
可能であれば、この問題を回避したくありません。EFとObjectQueryを使用して問題が発生するのは不合理ではないようです。また、結合を指定して手動でクエリを作成できることも認識しています。残念ながら、私のLINQの経験は限られており、これまで試したたびに1つのテーブルでの複数の結合がうまくいきませんでした。
したがって、私が本当に知る必要があるのは、LINQに頼ったり、Fixturesテーブルを再構築したりせずに、上記を実現するために使用できる設定またはコードがあるかどうかです。
編集:
この画像は、関連するモデルを示しています。現状では、これは機能しますが、クエリは明らかに「TeamId1」列にリンクされた1つのチームインスタンスのみを返します。コメントされたコードは、モデルに必要なものを示しています(私の限られた以前の経験が示している限り)。そのため、私のモデルは、2つの別々の列にリンクされた2つの別々のチームを保持しています。