【发布时间】:2019-03-10 14:51:20
【问题描述】:
这是我的 appsettings.json
"ConnectionStrings": {
"Circolari": "Server=abcde;Database=Circolari;Trusted_Connection=True;"
}
这是我的 startup.cs
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
Configuration = configuration;
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = configurationBuilder.Build();
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
//Circolari
string connectoionString = Configuration.GetConnectionString("Circolari");
services.AddDbContext<CircolariContext>(options => options.UseSqlServer(connectoionString));
services.AddMvc();
}
所以当我进行查询时
using (CircolariContext db = new CircolariContext(new DbContextOptions<CircolariContext>()))
{
List<Argomenti> listaArgomenti = db.Argomenti.ToList();
}
我有问题:处理请求时发生未处理的异常。
InvalidOperationException:使用了命名连接字符串,但在应用程序的配置中找不到名称“Circolari”。请注意,仅在使用“IConfiguration”和服务提供者时才支持命名连接字符串,例如在典型的 ASP.NET Core 应用程序中。请参阅https://go.microsoft.com/fwlink/?linkid=850912 了解更多信息。
Microsoft.EntityFrameworkCore.Storage.Internal.NamedConnectionStringResolverBase.ResolveConnectionString(string connectionString)
有人可以帮我吗?
【问题讨论】:
-
您确定您的
appSettings.json正在加载吗?您已将其标记为可选,因此如果env.ContentRootPath不是正确的文件夹,则不会加载它。尝试将其标记为optional: false以查看它是否引发异常。 -
您的“所以当我进行查询时”的示例代码不使用依赖注入,是生成错误的实际代码吗?我想知道如果是这样,错误是如何获取连接字符串名称“Circolari”的......
-
@John 我认为配置已加载,因为如果我在 ConfigureServices 中放置一个断点,则会读取字符串,并且使用 optional: false 错误仍然存在
-
@Moho 这是实际代码,与我在我的小示例中编写的用于在 .net 核心上配置 ef 核心的代码相同
-
使用
optional: false。
标签: c# entity-framework ef-core-2.0 ef-core-2.1