在我的repo findbyid中使用.include

时间:2012-09-24 20:26:54

标签: entity-framework c#-4.0 entity-framework-4

我的通用存储库中有以下功能可以正常工作:

public IQueryable<T> FindWhere(System.Linq.Expressions.Expression<Func<T, bool>> predicate, params string[] includes)
{
        IQueryable<T> query = _dbSet;

        foreach (var child in includes)
        {
            query = query.Include(child);
        }

        return query.Where(predicate);            
}

然后我还要找到一个项目:

public T FindById(int id)
{
        return _dbSet.Find(id);
}

我需要的是FindById的覆盖,允许我传入params string[]包含,以允许我对找到的单个项目进行热切的加载属性。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用实体条目加载相关实体,但是您需要知道关系多样性:

entity = _dbSet.Find(id);

// Use this for a reference property
context.Entry(entity).Reference(propertyName).Load();

// Use this instead for a collection property
context.Entry(entity).Collection(propertyName).Load();