需要在上下文类中进行哪些更改才能将连接字符串移动到 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 需要哪些代码更改?