【问题标题】:ASP.NET Core Entity Framework- InvalidOperationException in dbModel contextASP.NET Core Entity Framework - dbModel 上下文中的 InvalidOperationException
【发布时间】:2018-09-19 12:02:43
【问题描述】:

初始化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>();
    }

可能是什么原因?

【问题讨论】:

    标签: c# entity-framework asp.net-core asp.net-core-2.0


    【解决方案1】:

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

    public ValuesController : Controller
    {
        private readonly DbModel _db;
    
        public ValuesController(DbModel db)
        {
            _db = db;
        }
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-25
        • 1970-01-01
        • 2017-05-16
        • 2017-09-30
        • 1970-01-01
        • 1970-01-01
        • 2020-11-25
        • 2021-12-04
        相关资源
        最近更新 更多