无法在通用数据访问层

时间:2017-03-15 23:03:36

标签: c# entity-framework generics dbcontext

我使用没有DbContext类的接口实现通用数据访问层;这是代码

public interface IGenericDataRepository<T> where T : class
{
    IList<T> Get(Func<T, bool> filter, int page, int pageSize, string[] includePaths = null, params SortExpression<T>[] sortExpressions);

}

这是具体实施:

public class GenericDataRepository<T> : IGenericDataRepository<T> 
    where T : class
{
    private readonly Func<DbContext> _contextFactory;

    public GenericDataRepository(Func<DbContext> contextFactory)
    {
        _contextFactory = contextFactory;
    }

    public virtual IList<T> Get(Func<T, bool> filter, int page, int pageSize, string[] includePaths = null, params SortExpression<T>[] sortExpressions)
    {
        List<T> list;
        using (var context = _contextFactory())
        {
            IQueryable<T> dbQuery = context.Set<T>();

            list = dbQuery.ToList<T>();
        }

        return list;
    }
}

重要:具体类采用DbContext参数,因为这个通用存储库将从不同的模块调用,并且它们具有自己的DbContext

现在我使用此代码从其他图层调用此存储库

public interface IBusinessLayer
{
    void AddCountries(params Country[] Countries);
}

public class BusinessLayer : IBusinessLayer
{
    Func<AccountingDBContext> _dbcontext;
    public void AddCountries(params Country[] Countries)
    {

        var repository = new GenericDataRepository<Country>(_dbcontext);
        //repository.Add(Countries);
    }
}

我的问题出现在我调用此存储库的位置(上面的代码)。

错误是永远不会分配_dbcontext。我认为Func<AccountingDBContext> _dbcontext;中存在一些问题。

0 个答案:

没有答案