我最近才开始面对这个问题。我正在使用Visual 2022预览最新版。我对DB做了一些简单的更改,并使用dbForge Studio 2022中用于Server的验证工具来验证所有对象。数据库是有效的。
当我试图更新我的上下文时,我会得到以下输出。
Build started...
Build succeeded.
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)
Object reference not set to an instance of an object.我获得了一个成功的构建,但它立即失败的错误。我想研究这个问题,但是没有其他日志窗口显示任何错误,我也找不出是什么原因造成的。
发布于 2022-11-07 09:00:29
经过许多无目的的斗争之后,我终于决定一个一个地撤销我的模式更改,当我从DB中删除这个表的时候,脚手架又开始正常工作了:
CREATE TABLE [dbo].[LookupImportBrand] (
[CompanyId] BIGINT NOT NULL,
[BranchId] BIGINT NOT NULL,
[Name] [dbo].[Name250] NOT NULL,
[Active] [dbo].[Boolean] NOT NULL,
CONSTRAINT [FK_LookupImportBrand_LookupImportCompany] FOREIGN KEY ([CompanyId]) REFERENCES [dbo].[LookupImportCompany] ([Id])
);我无法确定这里的根本原因是什么,但我重建了这张桌子,一切都很好。
发布于 2022-11-23 14:29:12
好的--这似乎是EFCore 7.0.0的一个已知问题,参见Github问题
这是由于表上缺少主键造成的。我发现我的一个表丢失了PK,我添加了一个表,dbcontext脚手架成功了。
发布于 2022-11-15 16:37:43
在使用EF核心7进行更新后,我也得到了相同的错误。运行支架命令不会给出太多的信息来排除故障。
https://stackoverflow.com/questions/74331538
复制相似问题