在 .NET Core 和 ASP.NET Core 中,appsettings.json 文件是用来存储配置信息的标准方法,例如数据库连接字符串。在开发应用程序时,从 appsettings.json 文件获取数据库连接字符串是一个常见的需求。以下是详细的步骤和代码示例,展示如何在 .NET Core 项目中配置和获取数据库连接字符串。

1)在 appsettings.json 中定义连接字符串

首先,在项目的 appsettings.json 文件中添加你的数据库连接字符串。通常,这些信息会放在 "ConnectionStrings" 部分中:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;"
  }
}

确保替换上述内容中的 your_server_name, your_database_name, your_username, 和 your_password 为你的数据库实际参数。

2)配置 Startup.cs 以使用配置

Startup.cs 文件中,确保你的应用程序已经配置为使用 appsettings.json。这通常在 CreateHostBuilder 方法中通过调用 ConfigureAppConfiguration 实现:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup

Startup 类中的 ConfigureServices 方法中,你可以配置服务来使用连接字符串:

public void ConfigureServices(IServiceCollection services)
{
    // 获取连接字符串
    var connectionString = Configuration.GetConnectionString("DefaultConnection");

    // 例如,配置 Entity Framework Core
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(connectionString));

    // 添加其他服务
    services.AddControllersWithViews();
}

3)使用依赖注入获取连接字符串

在你需要数据库连接的任何服务或控制器中,你可以使用依赖注入来获取 DbContext 实例或直接使用 IConfiguration 接口:

public class MyDatabaseService
{
    private readonly ApplicationDbContext _context;

    public MyDatabaseService(ApplicationDbContext context)
    {
        _context = context;
    }

    // 使用 _context 执行数据库操作...
}

如果只需要连接字符串而不是整个 DbContext,也可以直接注入 IConfiguration

public class SomeService
{
    private readonly string _connectionString;

    public SomeService(IConfiguration configuration)
    {
        _connectionString = configuration.GetConnectionString("DefaultConnection");
    }

    // 使用 _connectionString 进行操作...
}

参考文档:.NET Core appsettings.json 获取数据库连接字符串-CJavaPy

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐