【发布时间】:2020-08-04 23:07:57
【问题描述】:
我是这个 API 开发的新手,所以我有下一个问题。
是否可以在运行时为我的连接字符串获取数据库名称?这是因为用户将通过 Json 文件发送数据库名称。 我正在使用 Visual Studio 2019、NetCore 3.1。
我的 appsettings.json 是这样的:
"ConnectionStrings": {
"ImportConnection": "Data Source=SQLSERVER;Initial Catalog={dbName};User ID=Id;Password=Pass;MultipleActiveResultSets=True"
},
我在 configureservices 中的 Startup.cs 我有这个
services.AddDbContext<ApplicationDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ImportConnection")));
用户发送一个带有下一个结构的 Json 文件
{
"ImportTypeId": 1,
"Data": [
{
"LayoutID": 6,
"ClientID": "XXX",
其中 ClientID 是数据库名称。
我真的很想知道是否有办法将我的 connectionString 中的 Initial Catalog {dbName} 替换为 ClientID 值。
这也是我的 DbContext
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace API_Test.Models
{
public class ApplicationDBContext : IdentityDbContext<ApplicationUser>//DbContext
{
public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
{
}
public DbSet<DataModel> API_DATA { get; set; }
}
}
非常感谢
【问题讨论】:
-
根据您的描述,我无法清楚地理解您的要求。你的意思是你的应用程序中有多个连接字符串?就像每个用户都会包含他自己的连接字符串?另外,由于appsetiting.json是一个文件,不支持多线程修改。所以当有大量请求发送到您的服务器时,我们无法修改应用设置。
-
您能否更具体地说明“用户将通过 Json 文件发送数据库名称”这一说法。这是否意味着用户将通过命令行参数将 json 文件发送到应用程序。
-
@BrandoZhang 感谢您的评论,我只有一个连接字符串。用户在同一台服务器上有多个数据库,如果他想将信息导入到 DB A,然后再导入到 DB B,他想发送 DB 名称来使用。我正在考虑在运行时改变它。不知道有没有可能。
-
@DurgaPrasad 感谢您的评论,是的,用户将通过命令行参数发送 json fike
标签: api asp.net-core dynamic connection-string appsettings