C# DbContextOptions参数ASP.net核心
我得到ArgumentNullException:值不能为null。参数名称:选项 我想这是因为我的默认构造函数,我得到了null,但是如果我注释掉了构造函数,那么类的新实例需要参数,我不知道该给出什么。请帮忙C# DbContextOptions参数ASP.net核心,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我得到ArgumentNullException:值不能为null。参数名称:选项 我想这是因为我的默认构造函数,我得到了null,但是如果我注释掉了构造函数,那么类的新实例需要参数,我不知道该给出什么。请帮忙 public class OvertimeRequestBusiness { public static OvertimeRequestBusiness Instance { get; } = new OvertimeRequestBusiness();
public class OvertimeRequestBusiness
{
public static OvertimeRequestBusiness Instance { get; } = new OvertimeRequestBusiness();
private readonly DbContextOptions<DatabaseContext> _contextOptions;
//default ctor
public OvertimeRequestBusiness() : base() { }
public OvertimeRequestBusiness(DbContextOptions<DatabaseContext> contextOptions)
{
_contextOptions = contextOptions;
}
public async Task<List<User>> GetAllUsersAsync()
{
using (var ctx = new DatabaseContext(_contextOptions))
{
var query = ctx.Users;
var res = await query.ToListAsync();
return res;
}
}
}
公共类超时请求业务
{
公共静态OvertimeRequestBusiness实例{get;}=new OvertimeRequestBusiness();
私有只读DbContextOptions_contextOptions;
//默认选择器
public OvertimeRequestBusiness():base(){}
public OvertimeRequestBusiness(DbContextOptions contextOptions)
{
_contextOptions=contextOptions;
}
公共异步任务GetAllUsersAsync()
{
使用(var ctx=newdatabasecontext(_contextOptions))
{
var query=ctx.Users;
var res=await query.ToListAsync();
返回res;
}
}
}
在我的控制器中
[Route("users")]
[HttpGet]
public async Task<List<User>> GetAllUsers()
{
return await OvertimeRequestBusiness.Instance.GetAllUsersAsync();
}
[路由(“用户”)]
[HttpGet]
公共异步任务GetAllUsers()
{
return wait OvertimeRequestBusiness.Instance.GetAllUsersAsync();
}
以下是如何创建DbContextOptions
:
var optionsBuilder = new DbContextOptionsBuilder<DatabaseContext>();
optionsBuilder.UseSqlServer("connection_string_here");
你为什么使用你的类的静态实例?你救了我一天。非常感谢
new OvertimeRequestBusiness(optionsBuilder.Options);