I have been working with soft delete and now i want to load the navigation properties of my entity that are not “deleted”. I have found a way, my problem this way is not to clear for me, there is another way to do this.
Context.CreateSet().Include("Salary").Select(u => new {User= u, Salary = u.Salarys.Where(s => !s.Deleted)}).AsQueryable().Select(a => a.User).AsQueryable();
Eager loading doesn’t support filtering. Your code can be simplified to:
Includeis not needed because you are replacing it with your own query andAsQueryableis not needed because the query isIQueryableall the time till calledAsEnumerablewhich will sqitch to Linq-to-Objects when selecting users and selected salaries. EF will take care of correctly fixing navigation properties for you.