abpframework/abp · error · CliUsageException
The option you provided for Database Provider is invalid!
Error message
The option you provided for Database Provider is invalid!
What it means
Thrown by ProjectCreationCommandBase.GetDatabasePreference when the database provider option value does not match 'ef', 'entityframeworkcore', 'mongo', or 'mongodb' (case-insensitive). The method parses the -d/--database-provider option and maps known values to DatabaseProvider enum members; any unrecognized value falls through to a CliUsageException via ExceptionMessageHelper.GetInvalidOptionExceptionMessage.
Source
Thrown at framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs:394
{
var optionValue = commandLineArgs.Options.GetOrNull(Options.DatabaseProvider.Short, Options.DatabaseProvider.Long);
if (optionValue == null)
{
return DatabaseProvider.NotSpecified;
}
if (optionValue.Equals("ef", StringComparison.InvariantCultureIgnoreCase) || optionValue.Equals("entityframeworkcore", StringComparison.InvariantCultureIgnoreCase))
{
return DatabaseProvider.EntityFrameworkCore;
}
if (optionValue.Equals("mongo", StringComparison.InvariantCultureIgnoreCase) || optionValue.Equals("mongodb", StringComparison.InvariantCultureIgnoreCase))
{
return DatabaseProvider.MongoDb;
}
throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage("Database Provider"));
}
protected virtual async Task RunGraphBuildForMicroserviceServiceTemplate(ProjectBuildArgs projectArgs)
{
if (MicroserviceServiceTemplateBase.IsMicroserviceServiceTemplate(projectArgs.TemplateName))
{
await EventBus.PublishAsync(new ProjectCreationProgressEvent
{
Message = "Building the microservice solution"
}, false);
CmdHelper.RunCmd("dotnet build /graphbuild", projectArgs.OutputFolder);
}
}
protected async Task RunInstallLibsForWebTemplateAsync(ProjectBuildArgs projectArgs)
{
if (AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) ||View on GitHub (pinned to 7ed43b1931)
Solutions
- Use 'ef' or 'entityframeworkcore' for EF Core provider: `abp new MyProject -d ef`
- Use 'mongo' or 'mongodb' for MongoDB provider: `abp new MyProject -d mongodb`
- Note: the specific database engine (SQL Server, MySQL, PostgreSQL, etc.) is controlled by a separate --database-management-system option, not this one
Example fix
// before abp new MyProject -d sqlserver // after abp new MyProject -d ef // then specify the engine separately if needed
Defensive patterns
Strategy: validation
Validate before calling
// Validate database provider before project creation
var validProviders = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "ef", "entityframeworkcore", "mongo", "mongodb" };
if (!validProviders.Contains(dbProviderValue))
{
Console.Error.WriteLine("Error: Database provider must be 'ef' or 'mongodb'.");
return;
} Type guard
// Type guard for valid database provider values
static bool IsValidDatabaseProvider(string value) =>
value.Equals("ef", StringComparison.OrdinalIgnoreCase) ||
value.Equals("entityframeworkcore", StringComparison.OrdinalIgnoreCase) ||
value.Equals("mongo", StringComparison.OrdinalIgnoreCase) ||
value.Equals("mongodb", StringComparison.OrdinalIgnoreCase); Try / catch
try
{
await projectCreationCommand.ExecuteAsync(commandLineArgs);
}
catch (CliUsageException ex) when (ex.Message.Contains("Database Provider is invalid"))
{
logger.LogError("Use -d ef or -d mongodb. The engine (SQL Server/MySQL/etc.) is a separate option.");
} Prevention
- Distinguish provider type (ef/mongodb) from database engine (a separate --database-management-system option)
- Use 'ef' for Entity Framework Core or 'mongodb' for MongoDB
- Document the two-layer option model in team onboarding
When it happens
Trigger: Passing `abp new MyProject -d sqlserver` or any provider string not in {ef, entityframeworkcore, mongo, mongodb}. The string comparison fails all if-branches and reaches the throw statement.
Common situations: Developer assumes database provider values map to database engines (e.g., passing 'sqlserver' or 'postgres') rather than the two provider types. Confusion between database provider (EF/Mongo) and database management system (SQL Server/MySQL/etc., which is a separate option).
Related errors
- The option you provided for Database Management System is in
- The option you provided for Mobile App is invalid!
- The option you provided for UI Framework is invalid!
- Project name is missing!
- You can only create a new preview solution with preview CLI
AI-assisted analysis of abpframework/abp@7ed43b1931 (2026-08-13).
Data as JSON: /api/errors/4d504d76c1f05138.
Report an issue: GitHub.