如何将applicationDbContext与n层MVC架构一起使用

时间:2018-06-12 19:54:57

标签: asp.net-mvc asp.net-mvc-4 asp.net-core

我正在尝试在MVC中实现N层。我有一个问题,我将如何使用依赖注入在数据层中注入applicationDbContext,因为当我从业务层(BLL)调用DAL时,它需要在构造函数中使用applicationDbContext的参数。

public class ProductTypesDAL
{
    private readonly ApplicationDbContext _db;

    protected ProductTypesDAL(ApplicationDbContext db)
    {
        _db = db;
    }

    public List<ProductType> GetProductTypes()
    {
        return _db.ProductType.ToList();
    }
}

业务层:

public class ProductTypesBLL
{
    private ProductTypesDAL objProductTypeDAL = new ProductTypesDAL(); //Error when I initialize

    public List<ProductType> getProductTypes()
    {
        return objProductTypeDAL.GetProductTypes();
    }
}

我在DAL Layer中有applicationDBContext。还有其他我不想要的东西吗?

谢谢, 本

1 个答案:

答案 0 :(得分:0)

如果要在DAL中编写所有产品类型方法,请将其设置为静态。

试试这个:

public static class ProductTypesDAL
{   
    protected ProductTypesDAL() 
    {
    }

    public List<ProductType> GetProductTypes()
    {
        var _db = new ApplicationDbContext();

        return _db.ProductType.ToList();
    }
}

public class ProductTypesBLL
{    
    public List<ProductType> getProductTypes()
    {
        return ProductTypesDAL.GetProductTypes();
    }
}

你需要确定的一件事是这个类:ApplicationDbContext是从DbContext派生的类的正确名称,它拥有DbSets。