jan*_*bik 2 c# linq linq-to-entities entity-framework-4
我想将一组条件where子句附加到ObjectSet的末尾.但是,子句不会被执行,而是运行原始查询,例如:
using (Entities context = new Entities()){
var q = context.AuditLogs;
q.Where(o => o.WebsiteId == 1);
}
Run Code Online (Sandbox Code Playgroud)
不执行where子句并返回完整的结果集我可以改为使用IQueryAble,如:
var q = context.AuditLogs.AsQueryable();
q = q.Where(o => o.WebsiteId == 1);
Run Code Online (Sandbox Code Playgroud)
然而,这使我丧失了能够使用的能力.包括急切加载我的相关实体.
不,它不会.在执行查询之前的任何时候,您仍然可以将其强制转换回ObjectQuery <T>并调用Include之类的方法:
var query = context.AuditLogs.AsQueryable();
query = query.Where(o => o.WebsiteId == 1);
var auditLog = ((ObjectQuery<AuditLog>)query).Include("yourNavPropertyName")
.ToList();
Run Code Online (Sandbox Code Playgroud)
如果你的意图是逐步建立一个标准,那么其他的办法是利用EntitySQL与QueryBuilder的方法:
var query = context.AuditLogs.Where("it.WebsiteId = 1");
query = query.Where("...");
var auditLog = query.Include("yourNavPropertyName")
.ToList();
Run Code Online (Sandbox Code Playgroud)