在 Startup.cs 中添加 DbContextOptions 不注册数据存储 [英] Adding DbContextOptions in Startup.cs not registering data store

查看:18
本文介绍了在 Startup.cs 中添加 DbContextOptions 不注册数据存储的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是下面的代码在启动期间没有注册数据存储.这是我在应用程序响应中得到的特定错误"声明:

My problem is that the below code does not register a data store during startup. This is the specific "error" statement I get in the response from the application:

An unhandled exception occurred while processing the request.

InvalidOperationException: No data stores are configured. Configure a data store by overriding OnConfiguring in your DbContext class or in the AddDbContext method when setting up services.
    Microsoft.Data.Entity.Storage.DataStoreSelector.SelectDataStore(ServiceProviderSource providerSource)

在 ConfigureServices(IServiceCollection services) 中,我试图在 lambda 中为我的 DbContext 指定 DbContextOptions.代码:

In ConfigureServices(IServiceCollection services) I am trying to specify DbContextOptions for my DbContext in a lambda. Code:

services.AddEntityFramework(Configuration)
    .AddSqlServer()
    .AddDbContext<MyDbContext>(
        options =>
        options.UseSqlServer(Configuration.Get("Data:DefaultConnection:ConnectionString"))
    );

在我的 DbContext 中,我有一个构造函数,它将选项发送到基础代码:

In my DbContext, I have a constructor which sends the option to base, code:

public MyContext(DbContextOptions options) : base(options) { }

我的配置文件config.json,在启动时读取,包含这个连接字符串:

My configuration file config.json, which is read at startup, contains this connectionstring:

"Data": {
    "DefaultConnection": {
        "ConnectionString": "Server=(localdb)\MSSQLLocalDB;Database=MyDbName;Trusted_Connection=True;MultipleActiveResultSets=True;"
    }
}

我以前用过

protected override void OnConfiguring(DbContextOptions options)
{
    options.UseSqlServer(Startup.Configuration.Get("Data:DefaultConnection:ConnectionString"));

}

在我的 DbContext 中成功.它注册数据存储并正常工作,但我更愿意使用 lambda 方式.

in my DbContext successfully. It registers the data store and it works properly, but I'd rather use the lambda way.

如果需要更多信息,我会提供.

If there is any more information needed, I'll provide it.

推荐答案

您是将上下文注入控制器还是在任何使用它的地方?我发现如果你尝试更新上下文而不是注入它,它不会使用 Startup.cs 中指定的配置

Are you injecting your context into your controller or wherever you are using it? I discovered that if you try to new up the context instead of injecting it, it does not use the configuration specified in Startup.cs

这篇关于在 Startup.cs 中添加 DbContextOptions 不注册数据存储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆