3

私はソフト削除を使用してきましたが、「削除」されていないエンティティのナビゲーション プロパティをロードしたいと考えています。私は方法を見つけました。この方法での私の問題は、私にとって明確ではないことです。これを行う別の方法があります。

Context.CreateSet().Include("Salary").Select(u => new {User= u, Salary = u.Salarys.Where(s => !s.Deleted)}).AsQueryable().Select(a => a.User).AsQueryable();

4

1 に答える 1

4

Eager ローディングはフィルタリングをサポートしていません。コードは次のように簡略化できます。

var users = Context.CreateSet<User>()
                   .Select(u => new {
                       User = u,
                       Salary = u.Salaries.Where(s => !s.Deleted)
                    })
                    .AsEnumerable()
                    .Select(a => a.User);

Include独自のクエリに置き換えているため不要であり、ユーザーと選択した給与を選択するときにLinq-to-Objectsにsqitchするクエリが呼び出されるまで常にAsQueryable必要であるため、必要ありません。EF は、ナビゲーション プロパティを正しく修正します。IQueryableAsEnumerable

于 2012-10-21T09:44:26.257 に答える