precompile queries throws UnreachableException exception.
- Dominant language
- C#
- Stars
- 14.8k
- Forks
- 3.4k
- PR merge metrics
- PR metrics pending
Description
### Question
Windows 11
.NET 10.0.1
Entity Framework Core 10.0.1
dotnet-ef 10.0.1
引数にCancellationTokenを持つメソッドの中で、DbContextを操作するコードを書いて、
dotnet-efを使用して、--precompile-queriesを実行したところ、UnreachableExceptionによるエラーが発生しました。
似た事象は、
https://github.com/dotnet/efcore/issues/35494
で質問されていますが、
https://github.com/dotnet/efcore/issues/35503
で修正済みのように見えます。
以下に、簡易な再現リポジトリを用意しました。
[https://github.com/Empressia/EntityFrameworkCoreTest01](https://github.com/Empressia/EntityFrameworkCoreTest01)
確認してもらえるものでしょうか。
なお、ローカル変数に、一度、代入してから使用すると、発生しないように見えます。
~~~ 以下、翻訳版(Translated version below)~~~
I wrote code that operates on a DbContext inside a method that takes a CancellationToken as a parameter.
When I ran dotnet-ef with the --precompile-queries option, an error occurred due to an UnreachableException.
A similar issue was discussed in:
https://github.com/dotnet/efcore/issues/35494
and it appears to have been fixed in:
https://github.com/dotnet/efcore/issues/35503
I have prepared a minimal reproduction repository below:
https://github.com/Empressia/EntityFrameworkCoreTest01
Could you please take a look?
Additionally, the issue does not seem to occur if the value is first assigned to a local variable and then used.
### Your code
```csharp
dotnet tool install dotnet-ef --local
dotnet build
dotnet dotnet-ef dbcontext optimize --no-scaffold --precompile-queries --nativeaot --no-build
```
### Stack traces
```text
Query precompilation is an experimental feature and should be used with caution.
NativeAOT support is experimental and can change in the future.
System.InvalidOperationException: Query precompilation failed with errors:
QueryPrecompilationError { SyntaxNode = context.Users.OrderBy(u => u.ID).Select(u => u.ID).ToListAsync(cancellationToken), Exception = System.Diagnostics.UnreachableException: IdentifierName of type ParameterSymbol: cancellationToken
at Microsoft.EntityFrameworkCore.Query.Internal.CSharpToLinqTranslator.VisitIdentifierName(IdentifierNameSyntax identifierName)
at Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
at Microsoft.EntityFrameworkCore.Query.Internal.CSharpToLinqTranslator.Visit(SyntaxNode node)
at Microsoft.EntityFrameworkCore.Query.Internal.CSharpToLinqTranslator.Visit(SyntaxNode node, Type expectedType)
at Microsoft.EntityFrameworkCore.Query.Internal.CSharpToLinqTranslator.VisitArgument(ArgumentSyntax argument, Type expectedType)
at Microsoft.EntityFrameworkCore.Query.Internal.CSharpToLinqTranslator.Visit(SyntaxNode node, Type expectedType)
at Microsoft.EntityFrameworkCore.Query.Internal.CSharpToLinqTranslator.VisitInvocationExpression(InvocationExpressionSyntax invocation)
at Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
at Microsoft.EntityFrameworkCore.Query.Internal.CSharpToLinqTranslator.Visit(SyntaxNode node)
at Microsoft.EntityFrameworkCore.Query.Internal.CSharpToLinqTranslator.Translate(SyntaxNode node, SemanticModel semanticModel)
at Microsoft.EntityFrameworkCore.Query.Internal.PrecompiledQueryCodeGenerator.ProcessSyntaxTree(SyntaxTree syntaxTree, SemanticModel semanticModel, IReadOnlyList`1 locatedQueries, List`1 precompilationErrors, String suffix, ISet`1 generatedFileNames, CancellationToken cancellationToken) }
at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.PrecompileQueries(String outputDir, DbContext context, String suffix, IServiceProvider services, IReadOnlyDictionary`2 memberAccessReplacements, ISet`1 generatedFileNames)
at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.Optimize(String outputDir, String modelNamespace, String suffix, Boolean scaffoldModel, Boolean precompileQueries, DbContext context, Boolean optimizeAllInAssembly, Boolean nativeAot, List`1 generatedFiles, HashSet`1 generatedFileNames)
at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.Optimize(String outputDir, String modelNamespace, String contextTypeName, String suffix, Boolean scaffoldModel, Boolean precompileQueries, Boolean nativeAot)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OptimizeContextImpl(String outputDir, String modelNamespace, String contextType, String suffix, Boolean scaffoldModel, Boolean precompileQueries, Boolean nativeAot)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OptimizeContext.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
```
### Verbose output
```text
```
### EF Core version
10.0.1
### Database provider
Microsoft.EntityFrameworkCore.Sqlite
### Target framework
.NET 10
### Operating system
Windows11
### IDE
Visual Studio 2026 18.1.0
Contributor guide
Assessment
This issue has not been assessed yet.