Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.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
Asp.net mvc 如何在n层MVC体系结构中使用applicationDbContext_Asp.net Mvc_Asp.net Mvc 4_Asp.net Core - Fatal编程技术网

Asp.net mvc 如何在n层MVC体系结构中使用applicationDbContext

Asp.net mvc 如何在n层MVC体系结构中使用applicationDbContext,asp.net-mvc,asp.net-mvc-4,asp.net-core,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)

我正在尝试在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();
    }
}
公共类ProductTypesDAL
{
私有只读应用程序dbContext_db;
受保护的ProductTypesDAL(ApplicationDbContext数据库)
{
_db=db;
}
公共列表GetProductTypes()
{
返回_db.ProductType.ToList();
}
}
业务层:

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

    public List<ProductType> getProductTypes()
    {
        return objProductTypeDAL.GetProductTypes();
    }
}
公共类ProductTypesBLL
{
private ProductTypesDAL objProductTypeDAL=new ProductTypesDAL();//初始化时出错
公共列表getProductTypes()
{
返回objProductTypeDAL.GetProductTypes();
}
}
我在DAL层中有applicationDBContext。我还缺什么吗

谢谢,
Ben

如果您想在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();
    }
}
公共静态类ProductTypesDAL
{   
受保护的ProductTypesDAL()
{
}
公共列表GetProductTypes()
{
var_db=新的应用程序dbContext();
返回_db.ProductType.ToList();
}
}
公共类ProductTypesBLL
{    
公共列表getProductTypes()
{
返回ProductTypesDAL.GetProductTypes();
}
}

您需要确保的一件事是,这个类:ApplicationDbContext是从DbContext派生的类的正确名称,并且它包含数据库集。

为什么要创建这些层?特别是在你的例子中。您将沿着堆栈向下传递一个dbcontext,只是为了在dbcontext上调用一个方法。