public void ThrowExceptionWhenPrimaryKeyIsNotSet()
        {
            Action action = () =>
            {
                using (var helper = CreateHelper(null))
                    using (var bulkUpdate = new SqlServerBulkUpdate(helper.Connection))
                    {
                        bulkUpdate.DestinationTableName = TableName;
                        bulkUpdate.Update(new DataTable());
                    }
            };

            action.Should().Throw <InvalidOperationException>();
        }
        public void UpdateManyItems()
        {
            IEnumerable <BulkUpdateItem> data = GetItems();

            using (var reader = new EnumerableDataReader <BulkUpdateItem>(data, new string[] { "Id", "Name" }))
            {
                using (var bulkUpdate = new SqlServerBulkUpdate("connection string"))
                {
                    bulkUpdate.DestinationTableName = "TableName";
                    bulkUpdate.PrimaryKeyColumn     = "Id";
                    bulkUpdate.Update(reader);
                }
            }
        }
        public void BulkUpdateDataFromDataTable()
        {
            DataTable expectedData = CreateExpectedData();

            using (var bulkUpdate = new SqlServerBulkUpdate(ServerHelper.Connection))
            {
                bulkUpdate.DestinationTableName = TableName;
                bulkUpdate.PrimaryKeyColumn     = PrimaryKeyColumn;
                bulkUpdate.Update(expectedData);
            }

            DataTable actualData = LoadData(ServerHelper.Connection);

            SqlServerBulkHelper.CompareTables(actualData, expectedData);
        }
        public void ThrowExceptionWhenInputDataIsNull()
        {
            Action action = () =>
            {
                using (var helper = CreateHelper(null))
                    using (var bulkUpdate = new SqlServerBulkUpdate(helper.Connection))
                    {
                        bulkUpdate.DestinationTableName = TableName;
                        bulkUpdate.PrimaryKeyColumn     = PrimaryKeyColumn;
                        bulkUpdate.Update((IDataReader)null);
                    }
            };

            action.Should().Throw <ArgumentNullException>();
        }
        public void BulkUpdateDataFromDataTable()
        {
            DataTable expectedData = CreateExpectedData();
            DataTable actualData   = null;

            using (var bulkUpdate = new SqlServerBulkUpdate(ServerHelper.Connection))
            {
                bulkUpdate.DestinationTableName = TABLE_NAME;
                bulkUpdate.PrimaryKeyColumn     = PRIMARY_KEY_COLUMN;
                bulkUpdate.Update(expectedData);
            }

            actualData = LoadData(ServerHelper.Connection);

            SqlServerBulkHelper.CompareTables(actualData, expectedData);
        }
        public void BulkUpdateDataFromIDataReaderWithAction()
        {
            DataTable expectedData = CreateExpectedDataWithAction();
            DataTable actualData   = null;

            using (IBulkActionDataReader reader = CreateDataReaderForUpdate())
                using (var bulkUpdate = new SqlServerBulkUpdate(ServerHelper.Connection))
                {
                    bulkUpdate.DestinationTableName = TABLE_NAME;
                    bulkUpdate.PrimaryKeyColumn     = PRIMARY_KEY_COLUMN;
                    bulkUpdate.TempTableAction      = UpdateTempItems;
                    bulkUpdate.Update(reader);
                }

            actualData = LoadData(ServerHelper.Connection);

            SqlServerBulkHelper.CompareTables(actualData, expectedData);
        }
        public void BulkUpdateDataFromIDataReaderSynchronouslyWithoutDeadLock()
        {
            AsyncContext.Run(() =>
            {
                DataTable expectedData = CreateExpectedData();
                DataTable actualData   = null;

                using (IDataReader reader = expectedData.CreateDataReader())
                    using (var bulkUpdate = new SqlServerBulkUpdate(ServerHelper.Connection))
                    {
                        bulkUpdate.DestinationTableName = TableName;
                        bulkUpdate.PrimaryKeyColumn     = PrimaryKeyColumn;
                        bulkUpdate.Update(reader);
                    }

                actualData = LoadData(ServerHelper.Connection);

                SqlServerBulkHelper.CompareTables(actualData, expectedData);
            });
        }