dotnet/efcore · error · OperationException

Processing '{inputFile}' failed.

Error message

Processing '{inputFile}' failed.

What it means

Thrown when the built-in C# DbContext fallback generator (CSharpDbContextGenerator) reports compile errors while TransformText runs. The reporter already wrote each CompilerError to the operation reporter; this OperationException stops the pipeline so broken code is never written to disk.

Source

Thrown at src/EFCore.Design/Scaffolding/Internal/TextTemplatingModelGenerator.cs:130

        {
            if (!string.Equals(options.Language, "C#", StringComparison.OrdinalIgnoreCase))
            {
                throw new OperationException(DesignStrings.NoContextTemplate);
            }

            var defaultContextTemplate = new CSharpDbContextGenerator { Host = host, Session = host.Session };
            defaultContextTemplate.Initialize();

            generatedCode = defaultContextTemplate.TransformText();

            foreach (CompilerError error in defaultContextTemplate.Errors)
            {
                _reporter.Write(error);
            }

            if (defaultContextTemplate.Errors.HasErrors)
            {
                throw new OperationException(DesignStrings.ErrorGeneratingOutput(defaultContextTemplate.GetType().Name));
            }
        }

        var dbContextFileName = options.ContextName + host.Extension;
        var resultingFiles = new ScaffoldedModel
        {
            ContextFile = new ScaffoldedFile(
                options.ContextDir != null
                    ? Path.Combine(options.ContextDir, dbContextFileName)
                    : dbContextFileName,
                generatedCode)
        };

        var entityTypeTemplate = Path.Combine(options.ProjectDir!, TemplatesDirectory, EntityTypeTemplate);
        if (File.Exists(entityTypeTemplate))
        {
            host.TemplateFile = entityTypeTemplate;

View on GitHub (pinned to 3a2006ef56)

Solutions

  1. Check the reporter output above this error for the underlying CompilerError messages and address each.
  2. Align EFCore.Design and the database provider to the same release; rebuild and re-scaffold.
  3. Provide a custom DbContext.t4 to take control of context generation and bypass the built-in generator.
  4. Reduce the schema (exclude tables via --table filters) to isolate which object triggers the failure, then file an issue with that minimal repro.
Defensive patterns

Strategy: try-catch

Try / catch

try { sg.GenerateModel(model, options); }
catch (OperationException ex) when (ex.Message.Contains("ErrorGeneratingOutput"))
{
    // inspect reporter output above; align provider/design versions
    throw;
}

Prevention

When it happens

Trigger: GenerateModel takes the else branch (no custom DbContext.t4, C# language) and defaultContextTemplate.Errors.HasErrors is true after TransformText().

Common situations: The model produced by reverse engineering contains constructs the bundled C# generator cannot render (rare; usually a sign of a provider/EFCore.Design version mismatch or an exotic annotation). Also seen with internal/preview builds where the code generator is ahead of the model conventions.

Related errors


AI-assisted analysis of dotnet/efcore@3a2006ef56 (2026-08-11). Data as JSON: /api/errors/06670bd6735e6f1e. Report an issue: GitHub.