C# 在Asp.Net内核中初始化DBContext
我想在我的项目中使用存储库和工作单元。 但是在ASP.NET MVC中,当我们想使用DBContext时,就可以使用此代码C# 在Asp.Net内核中初始化DBContext,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我想在我的项目中使用存储库和工作单元。 但是在ASP.NET MVC中,当我们想使用DBContext时,就可以使用此代码 MyDbContext db=new MyDbContext(); 但在ASP.NET内核中,编写此代码时需要一个参数 因为在DbContext类中使用此代码 public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { } 公共MyDbContext(DbContex
MyDbContext db=new MyDbContext();
但在ASP.NET内核中,编写此代码时需要一个参数
因为在DbContext
类中使用此代码
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }
公共MyDbContext(DbContextOptions选项):基(选项){
错误:问题出在哪里?
公共MyDbContext(DbContextOptions)
public MyDbContext(DbContextOptions<MyDbContext> options)
在MyDbContext
类中没有空构造函数,所以应该在构造函数中传递参数DbContextOptions
例如,您可以看到它->公共MyDbContext(DbContextOptions)
在MyDbContext
类中没有空构造函数,所以应该在构造函数中传递参数DbContextOptions
例如,您可以看到它->您不应该实例化DbContext,应该将其作为存储库的构造函数参数进行请求。然后,IOC容器将在运行时提供DbContext。这确保了您可以在给定的ASP.NET web请求中使用相同的DbContext,这将防止您可能遇到的大量问题 您可以在此处看到通用存储库的示例:
在ASP.NET应用程序中,通常不需要单独的工作单元(但有时需要)。这是因为您的请求应该非常小,您应该能够在单个控制器或服务中完成大部分工作,然后只需通过存储库进行保存。这并不是说您永远不需要UoW,而是它比厚客户端场景(例如windows应用程序或服务)中的UoW更不必要。您不应该实例化DbContext,应该将其作为存储库的构造函数参数进行请求。然后,IOC容器将在运行时提供DbContext。这确保了您可以在给定的ASP.NET web请求中使用相同的DbContext,这将防止您可能遇到的大量问题 您可以在此处看到通用存储库的示例:
在ASP.NET应用程序中,通常不需要单独的工作单元(但有时需要)。这是因为您的请求应该非常小,您应该能够在单个控制器或服务中完成大部分工作,然后只需通过存储库进行保存。这并不是说你永远不需要UoW,而是它比厚客户端场景(例如windows应用程序或服务)中的UoW更不必要。你可以在你的类UnitOfWork中尝试
private MyDBContext _context;
public UnitOfWork(MyDBContext context)
{
_context = context;
}
在控制器中:
private UnitOfWork _unitOfWork;
public MoviesController(MyDBContext context)
{
_unitOfWork = new UnitOfWork(context);
}
你可以试试:在你的班上
private MyDBContext _context;
public UnitOfWork(MyDBContext context)
{
_context = context;
}
在控制器中:
private UnitOfWork _unitOfWork;
public MoviesController(MyDBContext context)
{
_unitOfWork = new UnitOfWork(context);
}
您可以像这样初始化数据库上下文:
var optionBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionBuilder.UseSqlServer("Server=localhost;...");
var context = new MyDbContext(optionBuilder.Options);
您可以像这样初始化数据库上下文:
var optionBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionBuilder.UseSqlServer("Server=localhost;...");
var context = new MyDbContext(optionBuilder.Options);
可能重复的可能重复的可能重复的您将如何初始化用于单元测试的DBcontext或其他类型的非ASP.NET应用程序?您将如何初始化用于单元测试的DBcontext或其他类型的非ASP.NET应用程序?我已经详细解释了代码和其他选项。我已经解释了代码和其他选项详细的选项。