{"record":{"id":"4d504d76c1f05138","repo":"abpframework/abp","slug":"the-option-you-provided-for-database-provider-is-i","errorCode":null,"errorMessage":"The option you provided for Database Provider is invalid!","messagePattern":"The option you provided for Database Provider is invalid!","errorType":"exception","errorClass":"CliUsageException","httpStatus":null,"severity":"error","filePath":"framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs","lineNumber":394,"sourceCode":"    {\n        var optionValue = commandLineArgs.Options.GetOrNull(Options.DatabaseProvider.Short, Options.DatabaseProvider.Long);\n\n        if (optionValue == null)\n        {\n            return DatabaseProvider.NotSpecified;\n        }\n\n        if (optionValue.Equals(\"ef\", StringComparison.InvariantCultureIgnoreCase) || optionValue.Equals(\"entityframeworkcore\", StringComparison.InvariantCultureIgnoreCase))\n        {\n            return DatabaseProvider.EntityFrameworkCore;\n        }\n\n        if (optionValue.Equals(\"mongo\", StringComparison.InvariantCultureIgnoreCase) || optionValue.Equals(\"mongodb\", StringComparison.InvariantCultureIgnoreCase))\n        {\n            return DatabaseProvider.MongoDb;\n        }\n\n        throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(\"Database Provider\"));\n    }\n\n    protected virtual async Task RunGraphBuildForMicroserviceServiceTemplate(ProjectBuildArgs projectArgs)\n    {\n        if (MicroserviceServiceTemplateBase.IsMicroserviceServiceTemplate(projectArgs.TemplateName))\n        {\n            await EventBus.PublishAsync(new ProjectCreationProgressEvent\n            {\n                Message = \"Building the microservice solution\"\n            }, false);\n\n            CmdHelper.RunCmd(\"dotnet build /graphbuild\", projectArgs.OutputFolder);\n        }\n    }\n\n    protected async Task RunInstallLibsForWebTemplateAsync(ProjectBuildArgs projectArgs)\n    {\n        if (AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) ||","sourceCodeStart":376,"sourceCodeEnd":412,"githubUrl":"https://github.com/abpframework/abp/blob/7ed43b1931b9df46a50c0c59148a18645641d0df/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs#L376-L412","documentation":"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.","triggerScenarios":"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.","commonSituations":"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).","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"],"exampleFix":"// before\nabp new MyProject -d sqlserver\n\n// after\nabp new MyProject -d ef\n// then specify the engine separately if needed","handlingStrategy":"validation","validationCode":"// Validate database provider before project creation\nvar validProviders = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { \"ef\", \"entityframeworkcore\", \"mongo\", \"mongodb\" };\nif (!validProviders.Contains(dbProviderValue))\n{\n    Console.Error.WriteLine(\"Error: Database provider must be 'ef' or 'mongodb'.\");\n    return;\n}","typeGuard":"// Type guard for valid database provider values\nstatic bool IsValidDatabaseProvider(string value) =>\n    value.Equals(\"ef\", StringComparison.OrdinalIgnoreCase) ||\n    value.Equals(\"entityframeworkcore\", StringComparison.OrdinalIgnoreCase) ||\n    value.Equals(\"mongo\", StringComparison.OrdinalIgnoreCase) ||\n    value.Equals(\"mongodb\", StringComparison.OrdinalIgnoreCase);","tryCatchPattern":"try\n{\n    await projectCreationCommand.ExecuteAsync(commandLineArgs);\n}\ncatch (CliUsageException ex) when (ex.Message.Contains(\"Database Provider is invalid\"))\n{\n    logger.LogError(\"Use -d ef or -d mongodb. The engine (SQL Server/MySQL/etc.) is a separate option.\");\n}","preventionTips":["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"],"tags":["cli","abp-cli","invalid-option","project-creation","database"],"backgroundTag":null,"analyzedSha":"7ed43b1931b9df46a50c0c59148a18645641d0df","analyzedAt":"2026-08-13T16:26:11.351Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}