0

を使用しており、という名前の親エンティティを読み込んでから、フィルターを使用して関連エンティティを明示的に読み込もEF 4.1 DBContext APIうとしています:UserProject.Where(x => x.IsEnabled)

ここで、「関連エンティティを明示的にロードするときにフィルターを適用する」の下で提案されたアプローチを見つけました。user.Projectsしかし、なぜ人口が増えていないのか分かりません。SQL プロファイラーを使用して、クエリを実行Projectsしてデータを返していることを確認しました。しかし、ユーザー オブジェクトにロードされていません。

何かご意見は?

これが私のコードです:

    public User GetUser(string userName)
    {
        try
        {
            using (var context = new Entities())
            {
                var user = context.Users.FirstOrDefault(x => string.Compare(x.UserName, userName, true) == 0);

                context.Entry(user).Collection(x => x.Projects).Query().Where(x => x.IsEnabled).Load();

                //TODO: I expect user.Projects.Count() > 0.
            }
        }
        catch (Exception ex)
        {
            LogWrapper.DumpException(ex);
        }

        return null;
    }
4

2 に答える 2

0
 User.projects = context.projects.select(x => x.user).where(x => x.isenabled);
于 2013-02-01T20:38:41.713 に答える
0

最近この問題に遭遇しました。これが私がやったことです。お役に立てば幸いです。

var query = context.User.Where(x => x.UserName == userName)
            .Include(x => x.Projects.All(p => p.IsEnabled == true))

var data = query.ToList();
于 2013-03-06T15:34:56.137 に答える