.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
相关产品推荐
相关产品推荐

