Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用enInclude()方法加载的通用存储库?_C#_Asp.net_Entity Framework_Eager Loading - Fatal编程技术网

C# 使用enInclude()方法加载的通用存储库?

C# 使用enInclude()方法加载的通用存储库?,c#,asp.net,entity-framework,eager-loading,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._db

以下是我的通用存储库:

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();
}
公共类存储库:IRepository其中T:BaseEntity
{
私有数据库上下文_数据库上下文{get;set;}
私有DbSet_DbSet{get;set;}
公共存储库(DbContext上下文)
{
这个._dbContext=context;
这个._dbSet=context.Set();
}
公共IQueryable GetAll(参数表达式[]包括)
{
IQueryable currentSet=此参数;
foreach(包含中的var项目)
{
currentSet=currentSet.Include(项目);
}
返回电流集;
}
public T Get(表达式谓词化,
参数表达式[]包括)
=>this.GetAll(包括).Where(谓词).FirstOrDefault();
}
问题是,当我使用“急切加载”加载一个问题(包括它的答案)时,我无法查询答案投票

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

非常感谢您的帮助


谢谢

您可以使用嵌套包含来解决您的问题。
参考链接:

首先问问自己是否真的需要这个存储库层。通常它只会引起麻烦。当您删除它们并直接使用数据库集时,您真的会损失什么吗?我向项目中添加存储库实现的主要原因是使用依赖项注入,使我的代码更易于测试。但是,它值得强加的限制吗?无论如何,也许会有帮助。@GertArnold我也在使用一个通用存储库,原因与OP相同。你能帮我提供一些链接来理解你在之前的评论中所说的话吗?这是一个只有链接的答案,当链接断开时它就没用了。此外,您提到的EF6解决方案在OP使用的EF核心中绝对不起作用。我想知道为什么它被接受了。