在.NET 6.0 ASP.NET Core Web应用中使用ApplicationDbContext的疑问
问题解答
1. 在哪里添加Settings的DbSet
直接在自动生成的ApplicationDbContext类中添加DbSet<Setting>即可,无需单独创建上下文。修改后的代码如下:
public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } // 添加自定义实体的DbSet public DbSet<Setting> Settings { get; set; } }
2. 迁移是否会自动处理DbSet
EF Core的约定优于配置机制会自动扫描程序集中的实体类并映射到数据库表,所以你之前没显式添加DbSet也生成了Settings表。但显式声明DbSet是推荐做法——能提升代码可读性,也方便后续直接通过上下文操作Settings表的数据。
3. 新表在迁移文件里但不在快照里的问题
迁移快照文件(ApplicationDbContextModelSnapshot.cs)是EF Core跟踪当前模型状态的核心文件,出现这种情况通常是因为添加实体后未生成正确的迁移。解决步骤:
- 确认已在
ApplicationDbContext中添加DbSet<Setting> - 打开命令行或Package Manager Console,执行命令重新生成迁移:
# Package Manager Console Add-Migration AddSettingsTable # .NET CLI dotnet ef migrations add AddSettingsTable - 执行迁移更新数据库:
# Package Manager Console Update-Database # .NET CLI dotnet ef database update
完成后,新的迁移文件和快照都会正确包含Settings表的结构。
4. 是否需要创建单独的上下文
不需要。Microsoft Identity生成的ApplicationDbContext已集成身份验证相关实体,直接将自定义实体(如Setting)添加到该上下文即可,统一管理数据库操作,避免多上下文带来的配置和事务问题。
内容的提问来源于stack exchange,提问作者user1231748
相关产品推荐
相关产品推荐

