.NET 6中不使用EF,从appsettings.json获取连接字符串至独立DAL项目
如何在独立DAL项目中获取appsettings.json的连接字符串(.NET 6 Web API,不使用Entity Framework)
1. 先配置API项目的appsettings.json
在API项目的appsettings.json里按标准格式添加连接字符串:
{ "ConnectionStrings": { "DefaultConnection": "Server=.;Database=YourDatabase;Trusted_Connection=True;TrustServerCertificate=True" } }
2. 给DAL项目添加必要的NuGet包
DAL需要读取配置的基础包,打开终端执行以下命令安装:
dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.Json
3. 两种获取连接字符串的方式
方式一:DAL直接读取配置文件(简单但不够灵活)
在DAL项目里写一个静态工具类来读取配置:
using Microsoft.Extensions.Configuration; using System.IO; namespace YourDALNamespace { public static class DbConfigHelper { public static string GetDefaultConnectionString() { var configBuilder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); var config = configBuilder.Build(); var connString = config.GetConnectionString("DefaultConnection"); if (string.IsNullOrEmpty(connString)) throw new InvalidOperationException("未找到名为DefaultConnection的连接字符串"); return connString; } } }
注意:如果DAL和API不在同一目录,要调整
SetBasePath的路径,确保能找到appsettings.json文件。发布时要把appsettings.json放到DLL所在目录。
方式二:通过依赖注入传递配置(推荐,符合.NET设计原则)
这种方式由API项目读取配置,再通过DI注入到DAL,更灵活易维护。
第一步:在DAL中定义配置模型
namespace YourDALNamespace { public class DbSettings { public string DefaultConnection { get; set; } = string.Empty; } }
第二步:在API的Program.cs中配置DI
var builder = WebApplication.CreateBuilder(args); // 绑定配置到DbSettings builder.Services.Configure<DbSettings>(builder.Configuration.GetSection("ConnectionStrings")); // 注册DAL的数据访问服务 builder.Services.AddScoped<YourDataAccessService>(); var app = builder.Build(); // 中间件配置... app.Run();
第三步:在DAL的服务中注入配置
using Microsoft.Extensions.Options; using System.Data.SqlClient; namespace YourDALNamespace { public class YourDataAccessService { private readonly string _connString; // 通过IOptions注入配置 public YourDataAccessService(IOptions<DbSettings> dbSettings) { _connString = dbSettings.Value.DefaultConnection; } // 示例数据操作方法 public void DoDatabaseOperation() { using var conn = new SqlConnection(_connString); // 执行SQL逻辑... } } }
关键注意点
- 用依赖注入的方式,后续更换配置源(比如环境变量、配置中心)时,不需要修改DAL代码,只需要调整API的配置逻辑。
- 开发环境中,如果DAL是类库项目,调试时要确保工作目录是API项目的目录,否则可能找不到appsettings.json。
内容的提问来源于stack exchange,提问作者Raghava Akula
相关产品推荐
相关产品推荐

