我正在构建一个企业应用程序,并且我希望第一次使用该网站可以选择要连接的SQL Server以及该服务器中的数据库。之后,应用程序将始终像普通的asp.net核心应用程序那样在配置上运行。
我知道连接字符串存储在appsettings.json
中,因此我在考虑选择此配置后在运行时更改其值,但是经过大量搜索后,我认为这是不可能的。
有什么建议可以解决这个问题?
答案 0 :(得分:0)
您必须在Program.cs中加载appsettings.json文件
public static void Main(string[] args)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false)
.Build();
string conStr = configuration.GetConnectionString("DefaultConnection");
// your code
var host = WebHost.CreateDefaultBuilder();
host.Run();
}
答案 1 :(得分:0)
在将reloadOnChange
添加到appsettings.json
时,将ConfigurationBuilder
设置为true:
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
然后为连接字符串创建一个类
public class ConnectionString
{
public string Default {get; set;}
}
在ConfigureServices
方法中:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.Configure<ConnectionString>(Configuration.GetSection("ConnectionStrings"));
}
现在可以通过依赖注入来使用此配置。
public class HomeController : Controller
{
private readonly ConnectionString _connectionString;
public HomeController(IOptionsSnapshot<ConnectionString> connectionString)
{
_connectionString = connectionString.Value;
}
}
IOptionsSnapshot
可以在更改时重新加载配置数据。
有关Configuration的更多信息。
答案 2 :(得分:0)
在连接到SQL Server Db之前,请确保已安装以下NuGet软件包。
首先,您必须像下面这样在appsettings.json
中创建连接字符串
"ConnectionStrings": {
"DefaultConnection": "Server=DESKTOP-O57GSNN\\MSSQLSERVERNEW,Database=BookListRazor;Trusted_Connection=True;MultipleActiveResultSets=True"},
这里,DefaultConnection是您将要使用的连接名称。请提供您想要的任何有意义的名称,该名称将在配置时使用。还要从SQL Server Management Studio提供服务器名称(请参见下图),并为您的数据库(将被创建)。
然后创建ApplicationDbContext.cs
文件并在下面的代码中键入
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<Book> Book { get; set; }
}
Book是我应用程序中的模型。
最后使用ConfigureServices
文件中Startup.cs
方法内的SQL Server配置对它进行配置。
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(option => option.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddRazorPages().AddRazorRuntimeCompilation();
}
DefaultConnection是
中已经提到的连接名称。appsettings.json