带有 Entity Framework Core 的 .NET 控制台应用程序:仅在未调试的情况下启动时“进程没有包标识”

Ali*_*eir 6 c# entity-framework entity-framework-core discord dsharp+

我有一个与 Entity Framework 和 Discord Sharp Plus 集成的 .NET 控制台应用程序,其中包含以下库:

  • 锐加
  • DSharpPlus.CommandsNext
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.Tools

在不调试的情况下运行应用程序(Visual Studio 中的 Control + F5)工作正常,没有发生崩溃。

但是,如果我使用调试运行,在访问 my 时DbContext,我会收到一个错误

InvalidOperationException: 进程没有包标识 (0x80073D54)

一个例子是这一行:

Database.Commands.SingleOrDefault(x => x.CommandTrigger == name)
Run Code Online (Sandbox Code Playgroud)

出于调试目的,如果我更改SingleOrDefault为,则会ElementAt(0)出现以下错误:

System.InvalidOperationException
HResult=0x80131509
消息=“NavigationExpandingExpressionVisitor”对 LINQ 表达式“DbSet .ElementAtOrDefault(__p_0)”的处理失败。这可能表示 EF Core 中存在错误或限制。有关更多详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=2101433
来源=Microsoft.EntityFrameworkCore

堆栈跟踪:

在 Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)

这不是 UWP 应用。它是一个带有多个类库的 .NET 控制台应用程序。

这是我的 Dbcontext 类:

Database.Commands.SingleOrDefault(x => x.CommandTrigger == name)
Run Code Online (Sandbox Code Playgroud)

vas*_*ski 4

这可能是由 EF Core 处理的内部异常。如果您在 Visual Studio 中禁用了“仅启用我的代码” ,您将看到这种异常:工具 -> 选项 -> 调试

在此输入图像描述 启用此选项应该可以解决该问题。

本质上,当代码外部发生异常时,即使已处理,这也会中断代码执行。

如果发生异常时按 F5,它应该继续运行 - 这是在没有附加调试器时程序运行而不会出现问题的方式。