需要在上下文类中进行哪些更改才能将连接字符串移动到 appsettings.json 文件中

Posted

技术标签:

【中文标题】需要在上下文类中进行哪些更改才能将连接字符串移动到 appsettings.json 文件中【英文标题】:What changes need to be made in context class to move connection string into appsettings.json file 【发布时间】:2021-09-06 23:09:22 【问题描述】:

我正在使用 .NET CORE WEB API 项目,我正在尝试将我的连接字符串移动到 appsettings.json 文件。

为此我做了以下更改:

在启动文件中:

public Startup(IConfiguration configuration)
        
            Configuration = configuration;
        

        public IConfiguration Configuration  get; 

 public void ConfigureServices(IServiceCollection services)
        
            services.AddControllers();
            services.AddCors(options =>
            
                options.AddPolicy(allowSpecificOrigins,
                builder =>
                
                    builder.AllowAnyOrigin()
                            .AllowAnyHeader()
                            .AllowAnyMethod();
                );
            );
services.AddSingleton(provider => Configuration);
            services.AddDbContext<pixelleContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("PixelleConnection")));
        

在 appsettings.json 文件中如下:


  "Logging": 
    "LogLevel": 
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    
  ,
  "AllowedHosts": "*",
  "ConnectionStrings": 
    "PixelleConnection": "Server=localhost;Database=PixelleSpecSheets;Trusted_Connection=True;"    
  

我不确定我需要在上下文类中做哪些更改,上下文类如下:

public partial class pixelleContext : DbContext
    
        public pixelleContext()
        
        

        public pixelleContext(DbContextOptions<pixelleContext> options)
            : base(options)
        
        

        public virtual DbSet<SpecCol> SpecCol  get; set; 
        public virtual DbSet<SpecRow> SpecRow  get; set; 
        public virtual DbSet<Specsheet> Specsheet  get; set; 

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        
            if (!optionsBuilder.IsConfigured)
            
                

              
            
        

以及引发错误的代码:

[System.Web.Http.HttpGet]
        public IEnumerable<Specsheet> Get()
        
            using (var context = new pixelleContext())
            
                return context.Specsheet.ToList();
            
        

【问题讨论】:

【参考方案1】:

你不需要在你的 dbcontext 类中做任何事情,这是正确的

你应该像这样调用数据库:

    //....
    private readonly pixelleContext _context;

    public ****Controller(pixelleContext context)
    
        _context = context;
    

    //....

    [HttpGet]
    public IEnumerable<Specsheet> Get()
    
        var model = _context.Specsheet.ToList();
        return model;
    

【讨论】:

以上是关于需要在上下文类中进行哪些更改才能将连接字符串移动到 appsettings.json 文件中的主要内容,如果未能解决你的问题,请参考以下文章

需要进行哪些更改才能使此代码检测多个人脸而不是仅一个人脸

将 C++ 从 VS2003 迁移到 VS2005 需要哪些代码更改?

我需要进行哪些更改才能执行上界的反转?

PHP 文件不会在浏览器中打开 - 只能下载。我需要进行哪些更改才能使其正常工作?

XIB 到情节提要

WCF 和 AD LDS 以及基本身份验证