我们有一个复杂的LINQ to实体查询,出于冗余原因,我们希望重用查询。
举例说明我们的问题:
var query = from x in context.Building.Include("Kitchen")
select x;
在另一个用例中,我们希望加载“卧室”
var query = from x in context.Building.Include("Bedroom")
select x;
以后可以添加或更改包含内容吗? 我正在寻找这样的东西:
var query = from x in context.Building select x;
query.AddInclude("Kitchen");
query.AddIncldue("Other stuff");
如何进行查询重用?
答案 0 :(得分:2)
下载EF 4.1并使用其强类型扩展程序IQueryable
或尝试编写AddInclude
,如:
public static IQueryable<T> AddInclude(this IQueryable<T> query, string include)
{
if (String.IsNullOrEmpty(include))
{
throw new ArgumetNullException("include");
}
var objectQuery = query as ObjectQuery<T>;
if (objectQuery == null)
{
throw new InvalidOperationException();
}
return objectQuery.Include(include);
}