Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net Core 2 EF Core连接字符串问题_C#_Entity Framework_Ef Core 2.0_Ef Core 2.1 - Fatal编程技术网

C# .Net Core 2 EF Core连接字符串问题

C# .Net Core 2 EF Core连接字符串问题,c#,entity-framework,ef-core-2.0,ef-core-2.1,C#,Entity Framework,Ef Core 2.0,Ef Core 2.1,这是我的appsettings.json "ConnectionStrings": { "Circolari": "Server=abcde;Database=Circolari;Trusted_Connection=True;" } 这是我的startup.cs public Startup(IConfiguration configuration, IHostingEnvironment env) { Configuration = configurati

这是我的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();
    }
公共启动(IConfiguration配置,IHostingEnvironment环境)
{
配置=配置;
IConfigurationBuilder configurationBuilder=新的configurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile(“appsettings.json”,可选:true,reloadOnChange:true);
Configuration=configurationBuilder.Build();
}
//此方法由运行时调用。使用此方法向容器中添加服务。
public void配置服务(IServiceCollection服务)
{
//环状
字符串connectionString=Configuration.GetConnectionString(“Circolari”);
services.AddDbContext(options=>options.UseSqlServer(connectoionString));
services.AddMvc();
}
所以当我进行查询时

using (CircolariContext db = new CircolariContext(new DbContextOptions<CircolariContext>()))
{
   List<Argomenti> listaArgomenti = db.Argomenti.ToList();
}
使用(CircolariContext db=new CircolariContext(new DbContextOptions())
{
详细信息请参见列表

Microsoft.EntityFrameworkCore.Storage.Internal.NamedConnectionStringResolverBase.ResolveConnectionString(字符串连接字符串)


有人能帮我吗?

我终于找到了解决问题的办法:

现在,在asp.net核心中,所有内容都必须被注入,因此您可以通过ServiceProvider获得您的db上下文(就像编译器告诉我的那样)

//这是构造函数
公共电子交易中心(IServiceProvider服务提供商)
{
_服务提供者=服务提供者;
}
//这就是方法
使用(\u aspContext=\u serviceProvider.GetService())
{
listaGiacenze=_aspContext.TabGiacenza.ToList();
}
修改startup.cs

public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
options.UseSqlServer(Configuration.GetConnectionString(“MiGranCitaDB”));
然后使用选项API控制器添加控制器,并使用实体框架执行操作


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());
            }
        }

我看到了相同的错误消息,这里没有一个解决方案为我解决了这个问题

我的问题是,在我的开发环境中,我选择了多个项目作为启动项目

在这种情况下,Visual Studio似乎不知道在哪里查找appsettings.json文件


临时切换到单个启动项目可以解决此问题,因此我在需要使用Scaffold DbContext重建数据库模型时会这样做。

您确定正在加载
appSettings.json
吗?您已将其标记为可选,因此如果
env.ContentRootPath
不是正确的文件夹,则不会加载它。请尝试标记它as
optional:false
查看它是否引发异常。您的“因此当我执行查询时”示例代码没有使用依赖项注入,这是生成错误的实际代码吗?我想知道错误是如何获取连接字符串名称“Circolari”的如果是…@John,我认为配置已经加载,因为如果我在ConfigureServices中放置一个breackpoint,字符串将被读取,并且使用optional:false,错误仍然存在here@Moho这是实际的代码,与我在.net coreUse上配置ef core的小示例中编写的代码相同
可选:false
因为我的问题解决了,我无法搭建一个新的控制器。
public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<DB_A6136B_MiGranCitaContext>(options =>
             options.UseSqlServer(Configuration.GetConnectionString("MiGranCitaDB")));
 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());
            }
        }