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

阿里·布迪尔

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

  • DSharpPlus
  • DSharpPlus.Commands下一个
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.Tools

在不调试的情况下运行应用程序(Visual Studio中为Control + F5)即可正常工作,不会崩溃。

但是,如果我运行了调试程序,则在访问myDbContext时会收到错误消息

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

这行是一个例子:

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

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

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//....
}
瓦西尔·奥列申斯基

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

在此处输入图片说明 启用此选项应该可以解决此问题。

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

如果在发生异常时按F5键,它将继续运行-如果没有连接调试器,这将使程序运行没有问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档