Entityframeworkモデルでは、タイプ/テーブル "ModelElement"があります。これはタイプ/テーブル "ElementToComponentMapping"にリンクされています。ナビゲーション/外部キーは "ModelID"と "ElementNo"です。EntityFramework/LINQ - 関連するテーブル/タイプからフィルタリングされたコンテンツを取得する
ModelElementインスタンスにリンクされたElementToComponentMappingのコンテンツも含まれる、特定のフィルタリング条件に基づいてModelElementのインスタンスを返すメソッドを記述する必要があります。課題は、私がElementToComponentMappingから返すものをフィルタリングする必要があるということです。つまり、使用することができないように見えます。インクルード
これは機能しません。インクルード/私の第二の試行が別々に関連する「ElementToComponentMappingsを」OUT照会次に、第一主「ModelElement」オブジェクトを照会することであった、と設定
public ModelElement GetModelElement(int modelID, int modelElementNo, int version)
{
return (from c in context.ModelElements.Include("ElementToComponentMapping")
where c.ModelID == modelID && c.ElementNo == modelElementNo
&& c.ElementToComponentMappings.Where(m => m.version == version)
select c).FirstOrDefault();
}
where句のナビゲーションタイプその「ModelElement」
のプロパティとしてpublic ModelElement GetModelElement(int modelID, int modelElementNo, int version)
{
ModelElement newElement = (from c in context.ModelElements
where c.ModelID == modelID && c.ElementNo == modelElementNo
select c).FirstOrDefault();
newElement.ElementToComponentMappings =
(from m in context.ElementToComponentMappings
where m.ModelID == modelID
&& m.ElementNo == modelElementNo
&& m.version == version
select m).FirstOrDefault();
return newElement;
}
しかしこれも"ElementToComponentMappings"オブジェクトを直接クエリすることによって返される型が "ModelElement"オブジェクトの "ElementToComponentMappings"プロパティと異なるため、機能しません。
これは単純な操作のようです - 外部キーリンクテーブルの値を取得します。ここではFKテーブルの内容からフィルタをかけることができます。
あなたのご意見ありがとうございます。残念ながらまだありません:最初の提案では、newElement.ElementToComponentMappingsプロパティはどこに設定されますか? 2番目の提案では、ElementToComponentMappingsにFirstOrDefaultの定義が含まれていないというエラーが発生し、最適な拡張メソッドオーバーロードに無効な引数が含まれています。型の違いについては、ElementToComponentMappingsがコレクションであることは間違いありません。つまり、ある時点でToListを呼び出す必要がありますか? –
最初の場合、それはトリックです。すべてが正しく設定されていれば、そのプロパティを設定する必要はありません。自動的に入力されます。 2番目のケースでは、それは不思議です。 'CreateSourceQuery'は' IQueryable'の実装である 'ObjectQuery'を返し、' FirstOrDefault'を提供します。 'ToList'でのあなたのやり方は、エンティティがプロキシされていない場合にのみ機能します。そうしないと、新しいコレクションをナビゲーションプロパティに割り当てることができないといういくつかのエラーが発生します。便利なヒント、トリック、洞察力については –
+1結局、私はこのアプローチを働かせることができなかったので、別のやり方でした。 –