我想使用Repository&我的项目中的工作单位。 但是在ASP.NET MVC中我们想要使用DBContext来使用这段代码
MyDbContext db=new MyDbContext();
但在ASP.NET Core中编写此代码时需要参数
因为在DbContext
Class
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }
答案 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);