2011-07-06 13 views
0

私はEntity Frameworkを初めて使用しています。 :-)
私は次のようなものがあります:

マスターテーブル
------------------------------ ------
イド:名:Detail_id:
1 MasterOne 1
2 MasterTwo 2

Entity Framework - 関連するレコードの条件を指定する

詳細テーブル:
-------------- ----------------------
Id:名前:タイプ:
詳細1 1
2詳細2 1
3詳細_3 2

詳細テーブルには、レコードタイプを区別するフラグ( 'タイプ')があります。

私のマスターオブジェクトは次のようになります。

パブリッククラスマスター
{
公共int型のID {取得します。セット; }
public string Name {get;セット; }
パブリック仮想IEnumerable <Detail>詳細{get;セット; }
}

私のマスターテーブルには、その詳細レコードをロードする必要がありますが、「1」のフラグを持つものだけ。

私の問題は、1

これは可能です=私はそれが唯一のタイプフラグとそれらの詳細レコードにプルする必要があるのに対し、IEnumerableを詳細プロパティは、すべての詳細レコードに引っ張るということですか?
ありがとうございます!あなたが試すことができ

答えて

0

あなたと仮定するとは、EF 4.1

を使用しています。

using (var context = new MyContext()) 
{ 
    var master = context.Masters.Find(1); 

    context.Entry(master) 
     .Collection(m => m.Details) 
     .Query() 
     .Where(d => d.Type == 1) 
     .Load(); 

    //do stuff with master 

} 

詳細については、Using DbContext in EF 4.1 Part 6: Loading Related Entitiesをご覧ください。

+0

ああ、良いもの!ありがとう! – user830665

0

:あなたは次のようにあなたがDetailsのフィルタリングされたリストをロードすることができる唯一の1 Masterレコードをロードする場合

var master = (ctx.Masters.Where(x => x.ID == 1)).FirstOrDefault(); 
var details = master.Details.Where(x=>x.Type == 1); 
関連する問題