I would like to append a set of conditional where clauses onto the end of an ObjectSet. However, the clauses do not get executed and instead the original query is run, for example:
using (Entities context = new Entities()){
var q = context.AuditLogs;
q.Where(o => o.WebsiteId == 1);
}
The where clause is not executed and the full result set is returned
I could instead use IQueryAble as in:
var q = context.AuditLogs.AsQueryable();
q = q.Where(o => o.WebsiteId == 1);
However this loses me the power of being able to use .Include to eager load my related entities.
No, it won’t. at any point before executing the query, you would still be able to cast it back to ObjectQuery<T> and invoke methods like Include on it:
If your intention is to build up a criteria incrementally, then the other option would be to leverage EntitySQL with QueryBuilder methods: