- Overview
- Getting Started
- Bulk Methods
- FREE Methods
- Dapper Plus Context
- Dapper Plus Manager
- Data Source
- Identity/Key Propagation
- Mapping
- Mapping Key
- Release Notes
- Licensing
- Trial
100+ Options to Add Flexibility to Your Data Saving Operations
Being able to save your entities quickly is crucial, but having the flexibility to save them THE WAY YOU WANT often holds greater importance, especially when using Bulk Extensions Methods and Single Extensions Methods.
Before we learn into all the available options, let's first understand how to use them with the UseBulkOptions
method:
- From Mapping
- From Connection and Transaction
From Mapping
You can utilize the UseBulkOptions
method by incorporating it into the mapping for a specific entity type. This ensures that every time your mapping is invoked, the bulk operations will employ these pre-defined options:
DapperPlusManager.Entity<Product>() .Table("Product") .Identity(x => x.ProductID) .UseBulkOptions(x => x.InsertIfNotExists = true); connection.BulkInsert(products);
You can also use a mapping key if the mapping is not the default one used for saving your entities.
From Connection and Transaction
You can call the UseBulkOptions
method directly from the connection or transaction before chaining your bulk operations methods. When configured in this manner, all subsequent bulk operations will use the specified options. Note that only general options that are not related to a specific entity type, such as Audit
, BatchSize
, or Log
, are available in this context:
connection.UseBulkOptions(options => options.Log = s => Console.WriteLine(s)) .BulkInsert(products);
Options
This section is currently under development as of 2024-09-21 and will soon be enhanced. Our upcoming updates will include better categorization of options, along with detailed descriptions and practical examples. Stay tuned for these improvements, designed to enhance your understanding and usage of the available settings in our library.
- Mapping
- CaseSensitive
- ColumnInputExpression
- ColumnInputNames
- ColumnInputOutputExpression
- ColumnInputOutputNames
- ColumnMappings
- ColumnOutputExpression
- ColumnOutputNames
- ColumnPrimaryKeyExpression
- ColumnPrimaryKeyNames
- ColumnStagingTableFormulaExpression
- ColumnStagingTableFormulaNames
- ForceOutputFromUnmodifiedRow
- IgnoreColumnOutputExpression
- IgnoreColumnOutputNames
- AutoTruncate
- DataSource
- DestinationSchemaName
- DestinationTableName
- AllowDuplicateKeys
- AllowUpdatePrimaryKeys
- UseSmartMatchNames
- UseTableLock
- ValidateAllDestinationMapped
- ValidateAllSourceMapped
- ValidateNoDuplicateKey
- ForceRowsAffectedValidation
- DisableDotCheckForEscapeTableName
- IsReadOnly
- MatchNamesWithUnderscores
- Audit
- AuditEntries
- AuditMode
- UseAudit
- Async
- CancellationToken
- AutoMap
- AutoMap
- AutoMapColumnBuilder
- AutoMapIdentityExpression
- AutoMapIdentityName
- AutoMapKeyExpression
- AutoMapKeyName
- AutoMapOutputDirection
- AutoMapOutputIdentity
- AutoMapValueFactory
- Batch
- BatchDelayInterval
- BatchSize
- BatchTimeout
- Danger Zone
- UnsafeMode
- Log
- Log
- UseLogDump
- LogDump
- AddLogExecuting
- StopwatchForSqlExecutingTime
- UseStopwatchForSqlExecutingTime
- Temporary Table
- TemporaryTableBatchByTable
- TemporaryTableCreate
- TemporaryTableInsertBatchSize
- TemporaryTableIsMemory
- TemporaryTableMinRecord
- TemporaryTableName
- TemporaryTablePersist
- TemporaryTableSchemaName
- TemporaryTableUseSameName
- TemporaryTableUseTableLock
- Parallel
- ParallelBatchByTask
- ParallelMinBatch
- ParallelMinRecord
- UseParallel
- Result Info
- UseRowsAffected
- ResultInfo
- RowsAffected
- Customization
- ForceSelectOutput
- CommandParameterAddRowIndex
- CommandParameterPrefix
- CommandParameterSuffix
- CombineMaxCommand
- UsePermanentTable
- Resolution
- RetryCount
- RetryInterval
- ErrorMode
- Errors
- DefaultValueResolution
- DisableInformationSchemaCache
- Connection & Providers
- Connection
- ConnectionFactory
- ConnectionName
- ConnectionString
- CustomProvider
- Transaction
- TransactionIsolationLevel
- UseInternalTransaction
- InternalTransaction
- Provider
- ProviderAssembly
- Optimization
- QueryHint
- TableHintSql
- DisableTemporaryTableClusteredIndex
- DisablePrimaryKeyNullCheck
- Event
- BulkOperationExecuted
- BulkOperationExecuting
- Insert
- InsertIfNotExists
- InsertKeepIdentity
- InsertNotMatchedAndFormula
- InsertPrimaryKeyAndFormula
- InsertStagingTableFilterFormula
- IgnoreOnInsertExpression
- IgnoreOnInsertNames
- Update
- CoalesceOnUpdateExpression
- CoalesceOnUpdateNames
- CoalesceDestinationOnUpdateExpression
- CoalesceDestinationOnUpdateNames
- IgnoreOnUpdateExpression
- IgnoreOnUpdateMatchedAndConditionExpression
- IgnoreOnUpdateMatchedAndConditionNames
- IgnoreOnUpdateMatchedAndOneNotConditionExpression
- IgnoreOnUpdateMatchedAndOneNotConditionNames
- IgnoreOnUpdateNames
- OnUpdateUseCoalesce
- OnUpdateUseCoalesceDestination
- UpdateMatchedAndConditionExpression
- UpdateMatchedAndConditionNames
- UpdateMatchedAndFormula
- UpdateMatchedAndOneNotConditionExpression
- UpdateMatchedAndOneNotConditionNames
- UpdatePrimaryKeyAndFormula
- UpdateStagingTableFilterFormula
- Delete
- DeleteMatchedAndConditionExpression
- DeleteMatchedAndConditionNames
- DeleteMatchedAndFormula
- DeleteMatchedAndOneNotConditionExpression
- DeleteMatchedAndOneNotConditionNames
- DeletePrimaryKeyAndFormula
- DeleteStagingTableFilterFormula
- IgnoreOnDeleteMatchedAndConditionExpression
- IgnoreOnDeleteMatchedAndConditionNames
- IgnoreOnDeleteMatchedAndOneNotConditionExpression
- IgnoreOnDeleteMatchedAndOneNotConditionNames
- Merge
- CoalesceOnMergeUpdateExpression
- CoalesceOnMergeUpdateNames
- CoalesceDestinationOnMergeUpdateExpression
- CoalesceDestinationOnMergeUpdateNames
- IgnoreOnMergeInsert
- IgnoreOnMergeInsertExpression
- IgnoreOnMergeInsertNames
- IgnoreOnMergeMatchedAndConditionExpression
- IgnoreOnMergeMatchedAndConditionNames
- IgnoreOnMergeMatchedAndOneNotConditionExpression
- IgnoreOnMergeMatchedAndOneNotConditionNames
- IgnoreOnMergeUpdate
- IgnoreOnMergeUpdateExpression
- IgnoreOnMergeUpdateNames
- MergeKeepIdentity
- MergeMatchedAndConditionExpression
- MergeMatchedAndConditionNames
- MergeMatchedAndFormula
- MergeMatchedAndOneNotConditionExpression
- MergeMatchedAndOneNotConditionNames
- MergeNotMatchedAndFormula
- MergePrimaryKeyAndFormula
- MergeStagingTableFilterFormula
- OnMergeInsertInputExpression
- OnMergeInsertInputNames
- OnMergeUpdateInputExpression
- OnMergeUpdateInputNames
- OnMergeUpdateUseCoalesce
- OnMergeUpdateUseCoalesceDestination
- Synchronize
- CoalesceOnSynchronizeUpdateExpression
- CoalesceOnSynchronizeUpdateNames
- CoalesceDestinationOnSynchronizeUpdateExpression
- CoalesceDestinationOnSynchronizeUpdateNames
- ColumnSynchronizeDeleteKeySubsetExpression
- ColumnSynchronizeDeleteKeySubsetFormula
- ColumnSynchronizeDeleteKeySubsetNames
- IgnoreOnSynchronizeInsertExpression
- IgnoreOnSynchronizeInsertNames
- IgnoreOnSynchronizeMatchedAndConditionExpression
- IgnoreOnSynchronizeMatchedAndConditionNames
- IgnoreOnSynchronizeMatchedAndOneNotConditionExpression
- IgnoreOnSynchronizeMatchedAndOneNotConditionNames
- IgnoreOnSynchronizeUpdateExpression
- IgnoreOnSynchronizeUpdateNames
- OnSynchronizeInsertInputExpression
- OnSynchronizeInsertInputNames
- OnSynchronizeUpdateInputExpression
- OnSynchronizeUpdateInputNames
- OnSynchronizeUpdateUseCoalesce
- OnSynchronizeUpdateUseCoalesceDestination
- SynchronizeDeleteDestinationTableFilterFormula
- SynchronizeIgnoreInsert
- SynchronizeIgnoreUpdate
- SynchronizeKeepidentity
- SynchronizeMatchedAndConditionExpression
- SynchronizeMatchedAndConditionNames
- SynchronizeMatchedAndFormula
- SynchronizeMatchedAndOneNotConditionExpression
- SynchronizeMatchedAndOneNotConditionNames
- SynchronizeNotMatchedAndFormula
- SynchronizeOnlyDelete
- SynchronizePrimaryKeyAndFormulaDelete
- SynchronizePrimaryKeyAndFormulaMerge
- SynchronizeSoftDeleteFormula Lambda
- LambdaCoalesceDestinationOnMergeUpdateExpression
- LambdaCoalesceDestinationOnSynchronizeUpdateExpression
- LambdaCoalesceDestinationOnUpdateExpression
- LambdaCoalesceOnMergeUpdateExpression
- LambdaCoalesceOnSynchronizeUpdateExpression
- LambdaCoalesceOnUpdateExpression
- LambdaColumnStagingTableFormulaExpression
- LambdaDeleteMatchedAndConditionExpression
- LambdaDeleteMatchedAndOneNotConditionExpression
- LambdaIgnoreColumnOutputExpression
- LambdaIgnoreOnDeleteMatchedAndConditionExpression
- LambdaIgnoreOnDeleteMatchedAndOneNotConditionExpression
- LambdaIgnoreOnInsertExpression
- LambdaIgnoreOnMergeInsertExpression
- LambdaIgnoreOnMergeMatchedAndConditionExpression
- LambdaIgnoreOnMergeMatchedAndOneNotConditionExpression
- LambdaIgnoreOnMergeUpdateExpression
- LambdaIgnoreOnSynchronizeInsertExpression
- LambdaIgnoreOnSynchronizeMatchedAndConditionExpression
- LambdaIgnoreOnSynchronizeMatchedAndOneNotConditionExpression
- LambdaIgnoreOnSynchronizeUpdateExpression
- LambdaIgnoreOnUpdateExpression
- LambdaInputExpression
- LambdaInputOutputExpression
- LambdaMergeMatchedAndConditionExpression
- LambdaMergeMatchedAndOneNotConditionExpression
- LambdaOnMergeInsertInputExpression
- LambdaOnMergeUpdateInputExpression
- LambdaOnSynchronizeInsertInputExpression
- LambdaOnSynchronizeUpdateInputExpression
- LambdaOutputExpression
- LambdaPrimaryKeyExpression
- LambdaSynchronizeDeleteKeySubsetExpression
- LambdaSynchronizeMatchedAndConditionExpression
- LambdaSynchronizeMatchedAndOneNotConditionExpression
- LambdaUpdateMatchedAndConditionExpression
- LambdaUpdateMatchedAndOneNotConditionExpression
- PostgreSQL
- UsePostgreSqlGetInformationSchema2
- UsePostgreSqlInsertOnConflictDoNothing
- UsePostgreSqlInsertOverridingSystemValue
- UsePostgreSqlInsertOverridingUserValue
- UsePostgreSqlTimeZone
- UsePostgreSqlUnprepare
- PostgreSqlBinaryImportTimeout
- Oracle
- UseOracleGlobalSequenceIndexTable
- SQL Server
- SqlBulkCopyOptions
- DisableSqlBulkCopyDirect
- UseTempDbForColumnEncrypted
- ForceTriggerResolution
- HasColumnEncrypted
- Internal
- Debug1
- IncludeGraph
- IncludeGraphOperationBuilder
- UseCompile
- TestExecuteAsync
- UseLegacyBatchOperation
- IsCheckConstraintOnInsertDisabled
- DeleteFromQueryExecuted
Conclusion
In this article, we've explored the extensive range of options Dapper Plus offers. It's understandable to feel a bit overwhelmed by the sheer number of choices available. Typically, a developer might use about 10 options throughout a project. However, if you have specific requirements, it's likely that one of our options can meet your needs. Should you need further clarification or have unique scenarios, you might want to revisit this page or contact us directly for assistance.
Author: ZZZ Projects