这是我的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)
有人可以帮我吗?
答案 0 :(得分:2)
YouContextFile.cs 添加此代码
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
// add IConfigurationRoot to get connection string
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json")
.Build();
optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"), x => x.UseNetTopologySuite());
}
}
答案 1 :(得分:0)
最后,我找到了解决问题的方法:
现在必须在asp.net核心中注入所有内容,以便您可以通过ServiceProvider获得数据库上下文(就像编译器告诉我的那样)
UIPickerView
答案 2 :(得分:0)
修改startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<DB_A6136B_MiGranCitaContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MiGranCitaDB")));
然后使用带有实体框架操作的API CONTROLLER选项添加控制器
答案 3 :(得分:0)
我看到了同样的错误消息,但这里的解决方案都没有为我解决这个问题。
我的问题是在我的 DEV 环境中,我选择了多个项目作为启动项目。
在这种情况下,Visual Studio 似乎不知道在哪里查找 appsettings.json 文件。
临时切换到单个启动项目解决了这个问题,因此当我需要使用 Scaffold-DbContext 重建数据库模型时,我会这样做。