You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core使用Scaffold-DbContext排除Identity表的方法及疑问

.NET Core Identity与Scaffold-DbContext问题解答

生成结果包含Identity表是否正常

这是正常现象。Scaffold-DbContext命令默认会遍历数据库中当前账号有权访问的所有表,包括Identity迁移生成的AspNet开头系列表,所以生成的Context会包含这些表的DbSet定义,且默认生成的Context会继承普通DbContext,而非IdentityDbContext。

只生成新建表模型的命令

要仅生成指定新建表的模型,需在Scaffold-DbContext命令中添加-tables参数,后跟目标表名(多表用逗号分隔)。

假设你新建了Orders和OrderItems两张表,命令示例如下:

scaffold-dbcontext "Server=localhost;Database=OrderSystemV;Trusted_Connection=true;TrustServerCertificate=True;" Microsoft.Entityframeworkcore.SqlServer -outputdir Models -tables Orders,OrderItems

关键注意事项

  • 执行命令前建议备份原OrderSystemVContext.cs文件,防止自定义配置被覆盖。
  • 由于你的项目需要Context继承IdentityDbContext<AppUser, AppRole>以支持Identity功能,执行完指定表的Scaffold命令后,需手动将生成的Context的继承关系改回IdentityDbContext<AppUser, AppRole>,同时保留新增表的DbSet定义。
  • 也可通过-context-dir参数指定Context的单独输出目录,或-namespace指定命名空间,避免与原有Identity相关代码冲突。

内容的提问来源于stack exchange,提问作者Berat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:22:07