问题描述
对于实体查询,我们有一个复杂的LINQ;出于冗余的原因,我们想重用该查询。
一个例子来说明我们的问题:
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\");
您如何进行查询重用?
解决方法
下载EF 4.1并使用对
IQueryable
的强类型扩展名,或尝试编写write4ѭ,例如:
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);
}