You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:25:20