.NET Console App with Entity Framework Core: 'The process has no package identity' only when started without debugging

6

I have a .NET Console App integrated with Entity Framework and Discord Sharp Plus with the following libraries:

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

Running the application without debugging (Control + F5 in Visual Studio) works just fine, no crashes issued.

However, if I run with debugging, upon accessing my DbContext, I get an error

InvalidOperationException: The Process has no package identity (0x80073D54)

An example being this line:

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

For debugging purposes, if I change SingleOrDefault to ElementAt(0), I get the following error:

System.InvalidOperationException
HResult=0x80131509
Message=Processing of the LINQ expression 'DbSet .ElementAtOrDefault(__p_0)' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.
Source=Microsoft.EntityFrameworkCore

StackTrace:

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

This is NOT an UWP app. It is a .NET console application with several class libraries.

Here's my Dbcontext class:

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-framework
entity-framework-core
discord
dsharp+
asked on Stack Overflow Jun 24, 2020 by Ali Bdeir • edited Jul 3, 2020 by Liam

2 Answers

3

This is could be an internal exception which is handled by EF Core. You will see this kind of exceptions if you have disabled 'Enable Just My Code' in Visual Studio: Tools -> Options -> Debugging

enter image description here Enabling this option should fix the issue.

Essentially this will break code execution when exception occurs outside of your code even if handled.

If you hit F5 when the exception occurs it should continue running - this is way your program is running without issues when there is not debugger attached.

answered on Stack Overflow Jul 3, 2020 by vasil oreshenski • edited Jul 3, 2020 by Ali Bdeir
0

I have read that this exception can occur when not using a fully qualified path on the connection string. Make sure that your database path in your connection is fully qualified in the following form:

var dbPath = @"Filename=C:\the\path\to\your\database.db";

You can decide on whether this full string is in the environment variable or whether you just have the path as an environment variable.

answered on Stack Overflow Jun 30, 2020 by Cameron Tinker

User contributions licensed under CC BY-SA 3.0