view original | go back | toggle font

14895-zzz-projects-z-bulkoperations-v2-9-39-retail

ZZZ Projects Z.BulkOperations v2.9.39 Retail

Extend and Overcome SqlBulkCopy Limitations with Must-Have Features

High Performance Operations

Use scalable bulk operations (Bulk Insert, Update, Delete, and Merge) and always get the best performance available for your database provider.

** **Output Identity Value
**
Overcome SqlBulkCopy limitations and use flexible features to output inserted identity and concurrency column values.

var bulk = new BulkOperation(connection)

                    <span>// Output newly inserted identity value after an insert
                    </span><span>bulk</span><span>.</span><span>ColumnMappings</span><span>.</span><span>Add</span><span>(</span><span>"CustomerID"</span><span>,</span> <span>ColumnMappingDirectionType</span><span>.</span><span>Output</span><span>);</span>

                    <span>bulk</span><span>.</span><span>BulkInsert</span><span>(</span><span>dt</span><span>);</span></code>

Insert, Update, Delete, Merge and more...

Bulk Operations is not only about inserting, get morecapability over SqlBulkCopy.

  • BulkInsert
  • BulkUpdate
  • BulkDelete
  • BulkMerge (Upsert)
  • BulkSaveChanges
  • BulkSynchronize

// Support all type of operations var bulk = new BulkOperation(connection); bulk.BulkInsert(dt); bulk.BulkUpdate(dt); bulk.BulkDelete(dt); bulk.BulkMerge(dt); bulk.BulkSaveChanges(ds); bulk.BulkSynchronize(dt);

Generic List<> as DataSource

Improve code maintainability by using strongly-typed lambda expression over hard coded string.

  • Use Bulk Operations with Generic List<>
  • Use Bulk Operations with Expando Object
  • Use Lambda Expression for mapping

var bulk= new BulkOperation<Customer>(connection); bulk.DestinationTableName = "Customer";

                                    <span>// Column Columns to Input
                                    </span><span>bulk</span><span>.</span><span>ColumnInputExpression</span> <span>=</span> <span>c</span> <span>=></span> <span>new</span> <span>{</span> <span>c</span><span>.</span><span>Code</span><span>,</span> <span>c</span><span>.</span><span>Name</span> <span>};</span>

                                    <span>// Choose Columns to Output
                                    </span><span>bulk</span><span>.</span><span>ColumnOutputExpression</span> <span>=</span> <span>c</span> <span>=></span> <span>c</span><span>.</span><span>CustomerID</span><span>;</span>

                                    <span>// Choose Key to Use
                                    </span><span>bulk</span><span>.</span><span>ColumnPrimaryKeyExpression</span> <span>=</span> <span>c</span> <span>=></span> <span>c</span><span>.</span><span>Code</span><span>;</span>

                                    <span>bulk</span><span>.</span><span>BulkMerge</span><span>(</span><span>customers</span><span>);</span></code>

Bulk Operations from LINQ Query

Perform bulk operations from LINQ Query without loading entities in memory.

  • DeleteFromQuery
  • UpdateFromQuery

var bulk = new BulkOperation<Customer>(connection);

                                            <span>// DELETE all customers inactive for more than 2 years
                                            </span><span>bulk</span><span>.</span><span>DeleteFromQuery</span><span>(</span>
                                            <span>c</span> <span>=></span> <span>c</span><span>.</span><span>Where</span><span>(</span><span>x</span> <span>=></span> <span>x</span><span>.</span><span>LastLogin</span> <span><</span> <span>DateTime</span><span>.</span><span>Now</span><span>.</span><span>AddYears</span><span>(-</span><span>2</span><span>)));</span>

                                            <span>// UPDATE all customers inactive for more than 2 years
                                            </span><span>bulk</span><span>.</span><span>UpdateFromQuery</span><span>(</span>
                                            <span>c</span> <span>=></span> <span>c</span><span>.</span><span>Where</span><span>(</span><span>x</span> <span>=></span> <span>x</span><span>.</span><span>Actif</span> <span>&&</span> <span>x</span><span>.</span><span>LastLogin</span> <span><</span> <span>DateTime</span><span>.</span><span>Now</span><span>.</span><span>AddYears</span><span>(-</span><span>2</span><span>)),</span>
                                            <span>c</span> <span>=></span> <span>new</span> <span>Customer</span> <span>{</span><span>Actif</span> <span>=</span> <span>false</span><span>});</span></code>

AutoMap with Case Insensitive

Sick of not being able to map column because of case sensitivity issue? Use flexible features to customize configuration

  • Auditing
  • Batch Size
  • Case Sensitivity
  • Logging

var bulk = new BulkOperation(connection); bulk.CaseSensitive = CaseSensitiveType.Insensitive; bulk.ColumnMappings.Add("cOdE", "Code"); bulk.BulkMerge(dt);