EF Core配置连接字符串是使用框架操作数据库的首要步骤,不同的配置方式适用于不同的开发场景,开发者可以根据项目需求选择合适的配置方法。

通过appsettings.json配置文件配置
这是.NET项目中最为常用的配置方式,适合大多数生产环境场景。首先在配置文件中添加连接字符串节点,以SQL Server为例,配置内容如下:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=TestDB;User Id=sa;Password=123456;"
}
}
然后在DbContext类中读取该配置,需要先注入IConfiguration实例:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
public class AppDbContext : DbContext
{
private readonly IConfiguration _configuration;
// 通过构造函数注入IConfiguration
public AppDbContext(IConfiguration configuration)
{
_configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// 读取配置文件中的连接字符串
string connectionString = _configuration.GetConnectionString("DefaultConnection");
optionsBuilder.UseSqlServer(connectionString);
}
}
代码中直接硬编码配置
这种方式适合快速测试或者简单的小项目,不需要依赖外部配置文件,直接在OnConfiguring方法中设置连接字符串:
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// 直接设置SQL Server连接字符串
string connectionString = "Server=localhost;Database=TestDB;User Id=sa;Password=123456;";
optionsBuilder.UseSqlServer(connectionString);
}
}
如果是使用MySQL数据库,只需要替换对应的数据库驱动方法即可,连接字符串格式也会有所区别:
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// MySQL连接字符串格式
string connectionString = "Server=localhost;Database=TestDB;User Id=root;Password=123456;Port=3306;";
optionsBuilder.UseMySql(connectionString, new MySqlServerVersion(new Version(8, 0, 21)));
}
}
通过依赖注入配置连接字符串
在ASP.NET Core项目中,更推荐通过依赖注入的方式配置DbContext,这样不需要在DbContext中直接依赖IConfiguration,代码结构更清晰:
// Program.cs中的配置代码
var builder = WebApplication.CreateBuilder(args);
// 从配置文件读取连接字符串并注册DbContext
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
此时DbContext类可以不需要重写OnConfiguring方法,只需要定义正常的DbContext结构即可:
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
// 定义数据库实体集合
public DbSet<User> Users { get; set; }
}
不同数据库的连接字符串格式差异
不同数据库的连接字符串格式存在一定差异,常见的数据库格式如下:
| 数据库类型 | 连接字符串示例 |
|---|---|
| SQL Server | Server=localhost;Database=TestDB;User Id=sa;Password=123456; |
| MySQL | Server=localhost;Database=TestDB;User Id=root;Password=123456;Port=3306; |
| PostgreSQL | Host=localhost;Database=TestDB;Username=postgres;Password=123456; |
| SQLite | Data Source=test.db; |
配置注意事项
- 连接字符串中的敏感信息如密码等,生产环境不要直接写在配置文件中,建议使用环境变量或者密钥管理服务存储。
- 使用依赖注入配置DbContext时,要确保对应的数据库驱动NuGet包已经安装,比如使用SQL Server需要安装
Microsoft.EntityFrameworkCore.SqlServer包。 - 如果连接字符串配置错误,EF Core在执行数据库操作时会抛出连接失败相关的异常,此时可以先检查连接字符串中的服务器地址、数据库名称、账号密码是否正确。