我的问题是,以下代码在启动期间未注册数据存储。这是我在应用程序的响应中得到的特定“错误”语句:

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服务)中,我尝试为lambda中的DbContext指定DbContextOptions。代码:
services.AddEntityFramework(Configuration)
    .AddSqlServer()
    .AddDbContext<MyDbContext>(
        options =>
        options.UseSqlServer(Configuration.Get("Data:DefaultConnection:ConnectionString"))
    );

在我的DbContext中,我有一个构造函数,可将选项发送到基本代码:
public MyContext(DbContextOptions options) : base(options) { }

启动时读取的配置文件config.json包含以下连接字符串:
"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方式。

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

最佳答案

您是将上下文注入(inject) Controller 中还是在使用它的任何地方?我发现,如果您尝试更新上下文而不是注入(inject)上下文,那么它将不使用Startup.cs中指定的配置。

关于c# - 在Startup.cs中添加DbContextOptions而不注册数据存储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29945317/

10-10 21:42