0

子オブジェクトのリストにアクセスするときに、EF を使用して親プロパティの値にアクセスするにはどうすればよいですか。

つまり、Project オブジェクトと Timesheet オブジェクトがあります。

プロジェクト
ID

...

TimeSheet
ProjectId
UserId
Date
TimeSpent
...

プロジェクトとそれに関連するタイムシートを取得する方法は理解していますが、特定のユーザーのすべてのタイムシートを取得して、プロジェクト名と各タイムシート レコードを表示したい場合はどうすればよいでしょうか。

例: ProjectName、Date、TimeSpent

その結果セットを形成する新しいエンティティを作成するのがベスト プラクティスですか、それとも IEnumerable を返して .Project.Name フィールドにアクセスできるようにするだけでよいでしょうか。

これは、Linq to Sql を使用するか、ADO.net/SP などをまっすぐに使用することで非常に簡単ですが、EF で私を殺します..

何か案は?

4

1 に答える 1

0

子供は常に親との関係を持っています。あなたの場合、おそらく「TimeSheet.Project」のような名前です。したがって、次のようなクエリを記述できます。

var q = from u in Context.Users
        where u.UserId == userId
        from ts in u.TimeSheets
        select new 
        {
            ProjectName = ts.Project.Name,
            Date = ts.Date,
            TimeSpent = ts.TimeSpent
        };
于 2009-09-17T13:42:19.887 に答える