Skip to content

Fixing CultureNotFoundException in EF Core Scaffold-DbContext

Problem Statement

When using Entity Framework Core's Scaffold-DbContext command to generate database models, you encounter this error:

text
System.Globalization.CultureNotFoundException: Only the invariant culture is supported in globalization-invariant mode.
(Parameter 'name') en-us is an invalid culture identifier.

This occurs because:

  1. Your .NET runtime is running in globalization-invariant mode (default in some deployments)
  2. EF Core's database scaffolding requires culture-specific information
  3. The operation attempts to use the 'en-US' culture, which is unavailable in invariant mode

The error persists even after adding <InvariantGlobalization>true</InvariantGlobalization> to your project file.


Solution

Configure your project to disable globalization-invariant mode:

xml
<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
  <ImplicitUsings>enable</ImplicitUsings>
  <!-- Add this line -->
  <InvariantGlobalization>false</InvariantGlobalization> 
</PropertyGroup>

After updating the project file:

  1. Save changes
  2. Clean/rebuild your solution (dotnet clean + dotnet build)
  3. Re-run the scaffold command

Why This Works

  • <InvariantGlobalization>true restricts the app to invariant culture only (for size optimization)
  • Database scaffolding requires culture-aware operations for:
    • Collation handling
    • String comparisons
    • Locale-specific SQL parsing
  • Setting InvariantGlobalization to false enables full culture support, resolving the CultureNotFoundException

Important Notes

  1. Server Requirements: Ensure your deployment environment supports full globalization
  2. App Size Impact: Disabling invariant mode increases app size (~1-2MB) due to ICU data inclusion
  3. Alternative Configuration: For Docker/self-contained apps, set runtime configuration instead:
bash
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=0 dotnet run

This solution applies to all .NET versions (6, 7, 8) experiencing the same globalization exception during EF Core scaffolding operations.