.NET 7控制台应用(EF Core 7)为何无OnConfiguring方法?
关于EF Core 7上下文缺少OnConfiguring()方法的说明
这不是操作错误,是EF Power Tools遵循当前.NET开发最佳实践导致的,具体原因和解决方式如下:
为什么没有生成OnConfiguring()
EF Power Tools在数据库优先模式下,默认采用依赖注入(DI)配置上下文的现代方式,这种情况下不会自动生成OnConfiguring()方法:
- 现在.NET官方推荐将数据库连接字符串配置在
appsettings.json中,然后在Program.cs里通过DI注册上下文,示例代码如下:builder.Services.AddDbContext<YourDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("YourConnectionString"))); - 此时上下文的连接配置由DI容器管理,不需要硬编码在
OnConfiguring()里,工具也就不会自动生成这个方法。
如果需要手动添加OnConfiguring()
如果你的场景确实需要这个方法,有两种方式:
- 手动添加:直接在上下文类中写入以下代码,注意判断
IsConfigured避免覆盖DI的配置:protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlServer("你的数据库连接字符串"); } } - 重新生成时勾选选项:再次使用EF Power Tools生成上下文时,在向导的配置选项里找到“生成OnConfiguring方法”的勾选框,选中后重新生成即可。
内容的提问来源于stack exchange,提问作者AeroClassics
相关产品推荐
相关产品推荐

