SqlServerStatementBuilder
This class is the BaseStatementBuilder-derived implementation for SQL Server, and is the default statement builder used by the library. It is automatically registered by SqlServerBootstrap — you do not need to instantiate it directly under normal use.
It generates [schema].[table]-quoted, @-parameterized T-SQL, and honors the hints argument (e.g. WITH (NOLOCK)) on every operation that accepts one — see SqlServerTableHints.
For Insert, InsertAll, Merge and MergeAll, the newly generated identity or primary key value is returned via SCOPE_IDENTITY() (single-row Insert) or an OUTPUT clause routed through a table variable (InsertAll/Merge/MergeAll) — the indirection through a table variable avoids SQL Server’s restriction against an OUTPUT clause on a target table that has enabled triggers.
BatchQuery and the internal skip/take query are built using a ROW_NUMBER() CTE rather than OFFSET/FETCH, so paging also works reliably against older compatibility levels.
Constructors
public SqlServerStatementBuilder(IDbSetting dbSetting)
public SqlServerStatementBuilder(IDbSetting dbSetting,
IResolver<Field, IDbSetting, string> convertFieldResolver = null,
IResolver<Type, Type> averageableClientTypeResolver = null)
convertFieldResolver defaults to SqlServerConvertFieldResolver, used to render CONVERT(...) expressions for typed fields.
Usability
Use StatementBuilderMapper to override it with a custom implementation.
StatementBuilderMapper.Add(typeof(SqlConnection), new MyCustomSqlServerStatementBuilder(dbSetting), true);