繁体   English   中英

ASP.NET核心实体框架-dbModel上下文中的InvalidOperationException

[英]ASP.NET Core Entity Framework- InvalidOperationException in dbModel context

初始化dbModel上下文时出现错误,如下所示:

在此处输入图片说明

这是我的dbContext类:

public class DbModel : DbContext
{
    public DbModel()
    {
    }

    public DbModel(DbContextOptions<DbModel> options)
        : base(options)
    { }

    public DbSet<UserModel> User {get;set;}
}

我根据stackoverflow中的一些答案在Startup.csConfigureServices方法中添加了以下代码,但是仍然出现错误。

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();

这是我的ConfigureServices方法:

public void ConfigureServices(IServiceCollection services)
{
        services.AddMvc();
        var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNetCore.Restaurant;Trusted_Connection=True;ConnectRetryCount=0";
        services.AddDbContext<DbModel>(options => options.UseSqlServer(connection));
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info { Title = "Restaurant APIs", Description = "Swagger Core API" });
        });
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
    }

可能是什么原因?

您正在手动初始化DbModel而不是使用DI将其注入到控制器中。

public ValuesController : Controller
{
    private readonly DbModel _db;

    public ValuesController(DbModel db)
    {
        _db = db;
    }
}

上面的答案是正确的。 DbContext初始化需要从容器中注入依赖项,因此您不能直接使用new。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM