A. *_*kiy 18 c# .net-core asp.net-core
我开发了一个简单的Web应用程序,并且在将来,我希望将其作为多租户来实现.
所以我想直接将连接字符串写入OnConfiguring方法:
public class ApplicationContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("connection string from appsettings.json");
base.OnConfiguring(optionsBuilder);
}
}
Run Code Online (Sandbox Code Playgroud)
启动课程:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationContext>();
services.AddMvc();
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能从中提取连接字符串appsettings.json成ApplicationContext类?
我不想为ApplicationContext类创建任何构造函数.
Gle*_*nov 17
让我们假设你有.NET Core应用程序,你的appsettings.json文件看起来像这样:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"Production": {
"SqliteConnectionString": "Filename=./MyDatabase.sqlite"
}
}
Run Code Online (Sandbox Code Playgroud)
你可以SqliteConnectionString从Startup.cs这样得到价值:
public void ConfigureServices(IServiceCollection services)
{
var connection = Configuration["Production:SqliteConnectionString"];
services.AddDbContext<MyContext>(options =>
options.UseSqlite(connection)
);
....
}
Run Code Online (Sandbox Code Playgroud)
然后在DBContext你的应该添加接受的构造函数DbContextOptions:
public class MyContext : DbContext
{
public MyContext (DbContextOptions<MyContext> options) : base(options)
{ }
...
}
Run Code Online (Sandbox Code Playgroud)
.NET 核心 2.0
添加这个类:
// Requires NuGet package Microsoft.Extensions.Configuration.Json
using Microsoft.Extensions.Configuration;
using System.IO;
namespace RutarBackgroundServices.AppsettingsJson
{
public static class AppSettingsJson
{
public static string ApplicationExeDirectory()
{
var location = System.Reflection.Assembly.GetExecutingAssembly().Location;
var appRoot = Path.GetDirectoryName(location);
return appRoot;
}
public static IConfigurationRoot GetAppSettings()
{
string applicationExeDirectory = ApplicationExeDirectory();
var builder = new ConfigurationBuilder()
.SetBasePath(applicationExeDirectory)
.AddJsonFile("appsettings.json");
return builder.Build();
}
}
}
Run Code Online (Sandbox Code Playgroud)
从“appsettings.json”文件中获取键“MssqlConnectionString”的值:
var appSettingsJson = AppSettingsJson.GetAppSettings();
var connectionString = appSettingsJson["MssqlConnectionString"];
Run Code Online (Sandbox Code Playgroud)
在项目的根目录中创建文件“appsettings.json”:
{
"MssqlConnectionString": "Server=yourip; Database=yourdbname; User Id=yourusername; Password=yourpassword; Pooling=true;",
"Db2ConnectionString": "Database=yourdbname;UserID=yourusername;Password=yourpassword;Server=yourip:yourport",
"SomeOtherKey": "SomeOtherValue"
}
Run Code Online (Sandbox Code Playgroud)
所以我想直接将连接字符串写入OnConfiguring方法:
如何从appsettings.json中提取连接字符串到ApplicationContext类?
我不想为ApplicationContext类创建任何构造函数.
你可以使用Options Pattern,IOptions但最简单的方法是在ApplicationContext构造函数中使用DI ;)
请按照以下文章:
| 归档时间: |
|
| 查看次数: |
27969 次 |
| 最近记录: |