重用查询和include方法

时间:2011-06-18 09:54:21

标签: entity-framework

我们有一个复杂的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");

如何进行查询重用?

1 个答案:

答案 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);
}  
相关问题