[英]How to append a where clause to an Entity Framework ObjectSet
我想将一组条件where子句附加到ObjectSet的末尾。 但是,这些子句不会执行,而是运行原始查询,例如:
using (Entities context = new Entities()){
var q = context.AuditLogs;
q.Where(o => o.WebsiteId == 1);
}
不执行where子句,并返回完整的结果集,我可以改为使用IQueryAble,如下所示:
var q = context.AuditLogs.AsQueryable();
q = q.Where(o => o.WebsiteId == 1);
但是,这使我失去了使用.include来渴望加载我的相关实体的能力。
不,它不会。 在执行查询之前的任何时候,您仍然可以将其强制转换回ObjectQuery <T>并调用诸如Include之类的方法:
var query = context.AuditLogs.AsQueryable();
query = query.Where(o => o.WebsiteId == 1);
var auditLog = ((ObjectQuery<AuditLog>)query).Include("yourNavPropertyName")
.ToList();
如果您打算逐步建立标准,那么另一种选择是利用EntitySQL和QueryBuilder方法:
var query = context.AuditLogs.Where("it.WebsiteId = 1");
query = query.Where("...");
var auditLog = query.Include("yourNavPropertyName")
.ToList();
在这里只要一些老式的衬裙就足够了。 假设您有一个名为SiteOwner的属性,则可以完成以下查询的工作
using (Entities context = new Entities()){
var webSites = from sites in context.AuditLogs.Include("SiteOwner")
where sites.WebSiteId == 1
select sites;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.