首页 > 解决方案 > 具有 Entity Framework Core 的 .NET 控制台应用程序:“进程没有包标识”仅在没有调试的情况下启动

问题描述

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

在不调试的情况下运行应用程序(Visual Studio 中的 Control + F5)工作得很好,没有出现崩溃。

但是,如果我在调试的情况下运行,在访问我的 时DbContext,我会收到一个错误

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

一个例子是这一行:

Database.Commands.SingleOrDefault(x => x.CommandTrigger == name)

出于调试目的,如果我更改SingleOrDefaultElementAt(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 类:

private readonly string dbPath = $"Data Source={Environment.GetEnvironmentVariable("YuutaDbPath")}";

public DbSet<Guild> Guilds { get; set; }
// ...
// ...

protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options.UseSqlite(dbPath);

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.SeedEnumValues//....
}

标签: c#entity-frameworkentity-framework-corediscorddsharp+

解决方案


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

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

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

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


推荐阅读