首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自包管理器控制台的DbContext提供了一个System.NullReferenceException

来自包管理器控制台的DbContext提供了一个System.NullReferenceException
EN

Stack Overflow用户
提问于 2022-11-05 21:16:01
回答 3查看 526关注 0票数 1

我最近才开始面对这个问题。我正在使用Visual 2022预览最新版。我对DB做了一些简单的更改,并使用dbForge Studio 2022中用于Server的验证工具来验证所有对象。数据库是有效的。

当我试图更新我的上下文时,我会得到以下输出。

代码语言:javascript
复制
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.

我获得了一个成功的构建,但它立即失败的错误。我想研究这个问题,但是没有其他日志窗口显示任何错误,我也找不出是什么原因造成的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-11-07 09:00:29

经过许多无目的的斗争之后,我终于决定一个一个地撤销我的模式更改,当我从DB中删除这个表的时候,脚手架又开始正常工作了:

代码语言:javascript
复制
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])
);

我无法确定这里的根本原因是什么,但我重建了这张桌子,一切都很好。

票数 0
EN

Stack Overflow用户

发布于 2022-11-23 14:29:12

好的--这似乎是EFCore 7.0.0的一个已知问题,参见Github问题

这是由于表上缺少主键造成的。我发现我的一个表丢失了PK,我添加了一个表,dbcontext脚手架成功了。

票数 1
EN

Stack Overflow用户

发布于 2022-11-15 16:37:43

在使用EF核心7进行更新后,我也得到了相同的错误。运行支架命令不会给出太多的信息来排除故障。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74331538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档