markrendle / Simple.Data

A light-weight, dynamic data access component for C# 4.0
MIT License
1.33k stars 303 forks source link

Bulk Insert does not respect identity insert option #393

Open jcwrequests opened 7 years ago

jcwrequests commented 7 years ago

The best way to explain this is with code. The following works I can insert a value into an identity column

  using (var scope = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(5 * 60)))
                        {

                            foreach(var item in results)
                            {
                                Simple.Data.Database.
                                OpenConnection(destionationDBConnectionString).
                                WithOptions(new Simple.Data.Ado.AdoOptions(commandTimeout: (5 * 60), identityInsert: true))
                                [this.destinationTableName].Insert(item);
                            }
                            scope.Complete();
                        }

This does not. The table puts in the identity value:

     using (var scope = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(5 * 60)))

                            Simple.Data.Database.
                            OpenConnection(destionationDBConnectionString).
                            WithOptions(new Simple.Data.Ado.AdoOptions(commandTimeout: (5 * 60),identityInsert: true))
                            [this.destinationTableName].Insert(results);
                            scope.Complete();
                        }

I will try and examine the code and see if it can be fixed easily.

jcwrequests commented 7 years ago

I have found the issue in the SqlBulkInserter and corrected it on a Forked version. While searching for the issue I noticed that the master branch version does not match the version on Nuget. The reason I even checked the version in the first place was the unchanged Forked code from master wasn't behaving the same as the code on Nuget. Does anyone know why this is the case?