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

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

http://img3.mukewang.com/60714eea00014fd612230345.jpg

这是我的dbContext课:


public class DbModel : DbContext

{

    public DbModel()

    {

    }


    public DbModel(DbContextOptions<DbModel> options)

        : base(options)

    { }


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

}

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


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>();

    }

可能是什么原因?


慕桂英4014372
浏览 220回答 2
2回答

炎炎设计

您正在手动初始化,DbModel而不是使用DI将其注入到控制器中。public ValuesController : Controller{&nbsp; &nbsp; private readonly DbModel _db;&nbsp; &nbsp; public ValuesController(DbModel db)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; _db = db;&nbsp; &nbsp; }}

侃侃无极

上面的答案是正确的。DbContext初始化需要从容器中注入依赖项,因此您不能直接使用new。
打开App,查看更多内容
随时随地看视频慕课网APP