使用 theninclude() 方法进行急切加载的通用存储库?

Tấn*_*ang 5 c# asp.net entity-framework eager-loading

这是我的通用存储库:

public class Repository<T> : IRepository<T> where T : BaseEntity
{
    private DbContext _dbContext { get; set; }
    private DbSet<T> _dbSet { get; set; }

    public Repository(DbContext context)
    {
        this._dbContext = context;
        this._dbSet = context.Set<T>();
    }

    public IQueryable<T> GetAll(params Expression<Func<T, object>>[] includes)
    {
        IQueryable<T> currentSet = this._dbSet;
        foreach (var item in includes)
        {
            currentSet = currentSet.Include(item);
        }
        return currentSet;
    }

    public T Get(Expression<Func<T, bool>> predicated, 
        params Expression<Func<T, object>>[] includes) 
        => this.GetAll(includes).Where(predicated).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

问题是当我使用急切加载来加载问题(包括其答案)时,我无法查询答案的投票。

我发现我收到了这个错误,因为我正在加载一个问题,包括它的答案,并再次包括答案的投票。所以我尝试使用 thenInclude() 来解决这个问题,但我不知道如何将它应用到通用存储库中。

任何帮助真的很感激。

谢谢

小智 0

您可以使用嵌套包含来解决您的问题。参考链接:EF LINQ 包含多个和嵌套实体