Summary
The EF Core providers register the generic RelationalSqlGenerationHelper rather than a provider-specific implementation. This means SQL generation uses default identifier quoting (double quotes) rather than the square bracket quoting ([identifier]) used by the ADO.NET layer's DbCommandBuilder.
Inconsistency
- ADO.NET layer: Uses
[ and ] for identifier quoting (set in FileCommandBuilder)
- EF Core layer: Uses
" for identifier quoting (default RelationalSqlGenerationHelper)
This mismatch could cause issues when EF Core generates SQL that the underlying ADO.NET command parser interprets differently.
What's Needed
A custom FileSqlGenerationHelper that:
- Uses
[ / ] for identifier quoting (matching the ADO.NET layer)
- Sets the correct statement terminator
- Handles provider-specific SQL syntax quirks
Location
Service registration: e.g., src/EFCore.Csv/Extensions/CsvServiceCollectionExtensions.cs
Currently: .AddSingleton<ISqlGenerationHelper, RelationalSqlGenerationHelper>()
Standard Reference
Summary
The EF Core providers register the generic
RelationalSqlGenerationHelperrather than a provider-specific implementation. This means SQL generation uses default identifier quoting (double quotes) rather than the square bracket quoting ([identifier]) used by the ADO.NET layer'sDbCommandBuilder.Inconsistency
[and]for identifier quoting (set inFileCommandBuilder)"for identifier quoting (defaultRelationalSqlGenerationHelper)This mismatch could cause issues when EF Core generates SQL that the underlying ADO.NET command parser interprets differently.
What's Needed
A custom
FileSqlGenerationHelperthat:[/]for identifier quoting (matching the ADO.NET layer)Location
Service registration: e.g.,
src/EFCore.Csv/Extensions/CsvServiceCollectionExtensions.csCurrently:
.AddSingleton<ISqlGenerationHelper, RelationalSqlGenerationHelper>()Standard Reference