nii*_*ico 8 asp.net-core asp.net-core-2.0 asp.net-core-mvc-2.0
我正在寻找在.net Core 2 MVC应用程序中的appsettings.json中存储连接字符串的最佳实践方法(就像你在MVC 5中的web.config中所做的那样).
我想使用Dapper而不是EF(我发现了许多EF示例).
像这样的东西:
{
"ConnectionStrings": {
"myDatabase": "Server=.;Database=myDatabase;Trusted_Connection=true;"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
Run Code Online (Sandbox Code Playgroud)
当然网上有很多例子吗?我无法找到.net core 2.0.
在1和2之间有一些变化,我想确保我使用的是第2版最佳实践.
我发现了这个 - 但似乎是.net核心1: Visual Studio 2017 - MVC核心 - 第05部分 - 来自appsettings.json的连接字符串
这使用键值对appsettings - 而不是连接字符串: 在ASP.NET Core 2.0中读取AppSettings
再次,目前还不清楚这是.net Core 1还是2:Net Core Connection String Dapper visual studio 2017
Dav*_*ang 12
appsettings.json{
"connectionStrings": {
"appDbConnection: : "..."
}
}
Run Code Online (Sandbox Code Playgroud)
如果遵循约定并在下面定义连接字符串connectionStrings,则可以使用扩展方法GetConnectionString()读取其值.
public class Startup
{
public IConfiguration Configuration { get; private set; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
// Since you said you're using Dapper, I guess you might want to
// inject IDbConnection?
services.AddTransient<IDbConnection>((sp) =>
new SqlConnection(this.Configuration.GetConnectionString("appDbConnection"))
);
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
public interface ISpecificationRepository
{
Specification GetById(int specificationId);
}
public SpecificationRepository : ISpecificationRepository
{
private readonly IDbConnection _dbConnection;
public SpecificationRepository(IDbConnection dbConnection)
{
_dbConnection = dbConnection;
}
public Specification GetById(int specificationId)
{
const string sql = @"SELECT * FROM [YOUR_TABLE]
WHERE Id = @specId;";
return _dbConnection
.QuerySingleOrDefault<Specification>(sql,
new { specId = specificationId });
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用选项模式.
定义一个与JSONappsettings.json 中的对象结构完全匹配的类
public class ConnectionStringConfig
{
public string AppDbConnection { get; set; }
}
Run Code Online (Sandbox Code Playgroud)在Startup上注册该配置
public void ConfigureServices(IServiceCollection services)
{
// ...
services.Configure<ConnectionStringConfig>(
this.Configuration.GetSection("connectionStrings")
);
// ...
}
Run Code Online (Sandbox Code Playgroud)在POCO中接收访问者
public class YourPoco
{
private readonly ConnectionStringConfig _connectionStringConfig;
public YourPoco(IOptions<ConnectionStringConfig> configAccessor)
{
_connectionStringConfig = configAccessor.Value;
// Your connection string value is here:
// _connectionStringConfig.AppDbConnection;
}
}
Run Code Online (Sandbox Code Playgroud)笔记:
| 归档时间: |
|
| 查看次数: |
16490 次 |
| 最近记录: |