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

查看:1480
本文介绍了在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)

在配置服务(IServiceCollection服务)我试图在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.

如果有更多的信息需要,我会提供它。 / p>

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天全站免登陆