OnConfiguring是EF Core配置数据库连接的核心方法,用于设置DbContextOptionsBuilder;适合快速配置,但生产环境推荐依赖注入+appsettings.json管理连接字符串,模型配置应放在OnModelCreating中。
OnConfiguring 方法是 EF Core 中配置数据库连接和行为的核心入口,它在每次 DbContext 实例创建时被自动调用,用于设置 DbContextOptionsBuilder。关键在于:它适合快速配置、原型开发或简单场景;但生产项目更推荐通过依赖注入 + appsettings.json 方式管理连接字符串和选项。
重写该方法,调用 UseSqlServer(或其他数据库提供程序)传入连接字符串即可:
base.OnConfiguring(optionsBuilder)(除非明确不需要父类逻辑)IConfiguration 注入(需构造函数接收)示例(SQL Server):
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder
.UseSqlServer("Server=.;Database=MyAppDb;Trusted_Connection=true;")
.LogTo(Console.WriteLine) // 简单控制台日志
.EnableSensitiveDataLogging(); // 开发时显示参数值(勿用于生产)
}
避免硬编码连接字符串,把配置交给宿主(如 ASP.NET Core 或 .NET 6+ 主机构建器)统一管理:
IConfiguration
OnConfiguring 中通过 _configuration.GetConnectionString("DefaultConnection") 获取Program.cs 中已注册 DbContext 并绑定同一连接字符串名这样既解耦又便于多环境切换(开发/测试/生产)。
以下常见操作可在此完成,无需额外服务注册:
UseSqlServer / UseSqlite / UseMySql)LogTo 或 UseLoggerFactory)EnableSensitiveDataLogging、EnableDetailedErrors)AddInterceptors),如审计、SQL 标签注入CommandTimeo
ut)注意:模型配置(如主键、索引、关系)应放在 OnModelCreating,而非 OnConfiguring。
当项目需要:
AddDbContextPool 进行性能优化此时应完全移除 OnConfiguring,改用 AddDbContext 在 DI 容器中集中配置选项。
基本上就这些。OnConfiguring 不复杂但容易忽略上下文生命周期和配置优先级——只要记住:它负责“怎么连”,而 OnModelCreating 负责“连什么结构”。