首先,我试图在我的数据库中植入样本数据.我已经读到这是做这件事的方法(在Startup.Configure)(请看ASP.NET Core RC2 Seed Database)

我在用ASP.NET Core 2.0和默认选项.

和往常一样,我在ConfigureServices中登记了我的DbContext分.

系统InvalidOperationException:'无法解析作用域服务

我的创业课程是这样的:

public abstract class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<SGDTPContext>(options => options.UseInMemoryDatabase("MyDatabase"))
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseMvc();

        SeedDatabase(app);
    }

    private static void SeedDatabase(IApplicationBuilder app)
    {
        using (var context = app.ApplicationServices.GetRequiredService<SGDTPContext>())
        {
            // Seed the Database
            //... 
        }
    }
}

我做错了什么?

推荐答案

您正在将SGDTPContext注册为scoped服务,然后try 访问作用域的outside.要在SeedDatabase方法内创建作用域,请使用以下方法:

using (var serviceScope = app.ApplicationServices.CreateScope())
{
    var context = serviceScope.ServiceProvider.GetService<SGDTPContext>();

    // Seed the database.
}

感谢@khellang在 comments 中指出了CreateScope扩展方法,以及@Tseng的 comments 和answer Re如何在EF Core 2中实现种子.

Asp.net相关问答推荐

页面刷新后如何存储JS Select 数据

此版本的 SQL Server 不支持用户实例登录标志.连接将关闭

log4net 记录所有未处理的应用程序错误

ASP.NET Web 应用程序 (.NET Framework) 与 ASP.NET Core Web 应用程序 (.NET Framework) 之间的差异

'Access-Control-Allow-Origin' 标头包含多个值 '*, *',但只允许一个

等待本地主机,永远!

如何从 RouteData 获取路由名称?

为什么aspx文件会返回404(找不到页面)

在不知道键名的情况下访问 JSON 对象的元素

如何从 JS 访问 ViewBag

Ef core:执行 MaxAsync 时序列不包含任何元素

ASP.NET 中的 <% %>(嵌入式代码块)

如何将图像 url 转换为 system.drawing.image

IIS 会话超时与 ASP.NET 会话超时

如何在 asp net core api 中使用 Created(或 CreatedAtAction / CreatedAtRoute)

回发不适用于 aspx 页面作为默认文档

将当前谷歌 map 保存为图片

如何response.write bytearray?

如何使用 jquery 设置单选按钮 Select 的值

如何使 URL 重写与 web.Release.config 转换一起工作?