Skip to content

Releases: cajuncoding/SqlBulkHelpers

Release v2.5.0

26 Jan 21:52
1ba9e5d

Choose a tag to compare

  • Fix issues with SLQ Server non-writeable fields such as Computed Columns & Persisted Columns causing failures during Bulk Insert/Update operations.
  • Migrate from FastMember to Fasterflect for improved performance, reliability and functionality.
  • Implement support for Property Handler interceptors to enable advanced dynamic transformation of property values during Bulk Insert/Update operations.
  • Add Support to intentionally ignore properties on data models (for edge cases) using SqlBulkIgnoreAttribute (e.g. [SqlBulkIgnore]).
  • Add Support for property mapping/interception handling for dynamic conversions before writing to the DB via new ISqlBulkHelpersPropertyConverter interface that can be added to any custom Attribute (e.g. transform complex object properties to Json to store in a single field).
    • Add Support for dynamic Json property conversion with new SqlBulkConvertToJsonAttribute (e.g. [SqlBulkConvertToJson]) now provided out-of-the-box.
  • Improve compatibility with RepoDb by implementing support for RepoDb PropertyHandler interceptors by dynamically detecting and using any registered PropertyHandlers (Annotations on Properties) if already used on models.
    • Add compatibility support to utilize RepoDb IPropertyHandler and PropertyHandlerAttribute for conversions before writing to the DB.

Release v2.4.4

28 Mar 02:27

Choose a tag to compare

  • Fix Collation Conflict Risks -- Thanks to Contribution by @simelis PR: #18
  • Fix Security Vulnerability in System.Data.SqlClient by updating to latest package reference.

Release v2.4.3

28 Mar 02:26

Choose a tag to compare

Fix Caching bug for Processing Definitions loaded from class Attribute annotations, etc. whereby the FullName was not correctly used resulting in cache conflicts and incorrect values when classes have the same name.

Release v2.4.2

28 Mar 02:26

Choose a tag to compare

  • Add Support to manually control if Materialized Loading tables are cleaned-up/removed when using SchemaCopyMode.OutsideTransactionAvoidSchemaLocks via materializeDataContext.DisableMaterializedStagingTableCleanup().
    • Always enabled by default and throws an InvalidOperationException if if SchemaCopyMode.InsideTransactionAllowSchemaLocks is used.
    • This provides support for advanced debugging and control flow support.
  • Improved SqlBulkHelpers Configuration API to now provide Clone() and Configure() methods to more easily copy/clone existing configuration and change values is specific instances; including copy/clone of the Defaults for unique execuctions.

Release v2.4.1

28 Mar 02:24

Choose a tag to compare

  • Added support to load Table Schema for Temp Tables (basic Schema details needed for BulkInsert or Update, etc. to allow Bulk Loading Temp Tables!
  • Improved Error message for when custom SQL Merge Match qualifiers are specified but DB Schema may have changed making them invalid or missing from Cached schema.

Release v2.4

28 Mar 02:24

Choose a tag to compare

  • Added new explicit CopyTableDataAsync() APIs which enable explicit copying of data between two tables on matching columns (automatically detected by column Name and Data Type).
  • Added new Materialized Data Configuration value MaterializedDataLoadingTableDataCopyMode to control whether the materialized data process automatically copies data into the Loading Tables after cloning. This helps to greatly simplify new use cases where data must be merged (and preserved) during the materialization process.

Release v2.3.1

28 Mar 02:23

Choose a tag to compare

Fixed bug with Sql Bulk Insert/Update processing with Model Properties that have mapped database names via mapping attribute (e.g. [SqlBulkColumn("")], [Map("")], [Column("")], etc.).

Release v2.3

28 Mar 02:22
fdde00f

Choose a tag to compare

  • Changed default behavior to no longer clone tables/schema inside a Transaction which creates a full Schema Lock -- as this greatly impacts Schema aware ORMs such as SqlBulkHelpers, RepoDb, etc.
    • Note: If you are manually orchestrating your process using StartMaterializedDataProcessAsync() and FinishMaterializeDataProcessAsync() then you now need to handle this by explicitly calling CleanupMaterializeDataProcessAsync() in a Try/Finally.
  • Added new configuration value to control if Schema copying/cloning (for Loading Tables) is inside or outide the Transaction (e.g. SchemaCopyMode.InsideTransactionAllowSchemaLocks vs OutsideTransactionAvoidSchemaLocks).
  • Fix bug in ReSeedTableIdentityValueWithMaxIdAsync() when the Table is Empty so that it now defaults to value of 1.

Release v2.2.3

28 Mar 02:21

Choose a tag to compare

Improved namespace for SqlBulkHelpers.CustomExtensions to reduce risk of conflicts with similar existing extensions.

Release v2.2.1

28 Mar 02:20
84f0282

Choose a tag to compare

Restored support for SqlConnection Factory (simplified now as a Func when manually using the SqlDbSchemaLoader to dynamically retrieve Table Schema definitions for performance.