在Asp.Net Core中初始化DBContext

时间:2018-04-15 08:20:22

标签: c# asp.net-core asp.net-core-mvc

我想使用Repository&我的项目中的工作单位。 但是在ASP.NET MVC中我们想要使用DBContext来使用这段代码

MyDbContext db=new MyDbContext();

但在ASP.NET Core中编写此代码时需要参数 因为在DbContext Class

中使用此代码
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }

错误:
Error 有什么问题?

4 个答案:

答案 0 :(得分:1)

public MyDbContext(DbContextOptions<MyDbContext> options)

你的MyDbContext类中没有空构造函数,所以你应该在构造函数中传递参数DbContextOptions<MyDbContext> options

例如,您可以看到它 - &gt; link1

答案 1 :(得分:0)

您不应该实例化DbContext,您应该将其作为存储库的构造函数参数请求它。然后您的IOC容器将在运行时提供DbContext。这确保您可以在给定的ASP.NET Web请求中使用相同的DbContext,这将防止您可能遇到的大量问题。

您可以在此处查看通用存储库的示例: http://deviq.com/repository-pattern/

在ASP.NET应用程序中,您通常也不需要单独的工作单元(但有时您也需要)。这是因为您的请求应该非常小,您应该能够在单个控制器或服务中完成大部分工作,然后只需通过存储库进行保存。这并不是说你从不需要UoW,但它不像在胖客户端场景中那么必要(例如Windows应用程序或服务)。

答案 2 :(得分:0)

您可以尝试:在班级UnitOfWork

private MyDBContext _context;

public UnitOfWork(MyDBContext context)
{
      _context = context;
}

在您的控制器中:

private UnitOfWork _unitOfWork;

public MoviesController(MyDBContext context)
{
      _unitOfWork = new UnitOfWork(context);
}

答案 3 :(得分:0)

var optionBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionBuilder.UseSqlServer("Server=localhost;...");
var context = new MyDbContext(optionBuilder.Options);