Entity Framework Core 7执行Scaffold-DbContext时触发空引用异常
EF Core 7反向生成模型时触发NullReferenceException的解决过程
问题场景
执行以下PowerShell命令通过EF Core 7反向生成数据库模型:
Scaffold-DbContext -connection name=constring Microsoft.EntityFrameworkCore.SqlServer -Output Models
appsettings.json中的连接字符串配置:
"ConnectionStrings": { "constring": "Server=.\\SQLExpress;Database=Words;Trusted_Connection=True; TrustServerCertificate=True" }
命令执行后编译成功,但抛出NullReferenceException错误:
System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.EntityFrameworkCore.Scaffolding.Internal.CSharpDbContextGenerator.TransformText() at Microsoft.EntityFrameworkCore.Scaffolding.Internal.CSharpModelGenerator.ProcessTemplate(ITextTransformation transformation) at Microsoft.EntityFrameworkCore.Scaffolding.Internal.CSharpModelGenerator.GenerateModel(IModel model, ModelCodeGenerationOptions options) at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(String connectionString, DatabaseModelFactoryOptions databaseOptions, ModelReverseEngineerOptions modelOptions, ModelCodeGenerationOptions codeOptions) at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
补充说明
明确EF Core并非数据库,本次操作也不是导入数据(另有应用负责数据导入)。
解决步骤
通过以下步骤解决了该问题:
- 修改实体类定义
- 删除数据库中的目标表
- 清除所有旧的迁移文件及记录
- 使用dotnet CLI执行新迁移并更新数据库
内容的提问来源于stack exchange,提问作者user2049142
相关产品推荐
相关产品推荐

