private async Task BulkUpdateDataWithCompositePk(OleDbConnection cn)
        {
            List <BulkUpdateItemComposite> actualData = null;

            using (var bulkUpdate = new MsAccessBulkUpdate(cn))
            {
                var dataToUpdate = new EnumerableDataReader <BulkUpdateItemComposite>(
                    new[] {
                    new BulkUpdateItemComposite()
                    {
                        Id1 = 1, Id2 = 2, DataValue = "lorem ipsum 1"
                    },
                    new BulkUpdateItemComposite()
                    {
                        Id1 = 2, Id2 = 2, DataValue = "lorem ipsum 2"
                    },
                    new BulkUpdateItemComposite()
                    {
                        Id1 = 3, Id2 = 2, DataValue = "lorem ipsum 3"
                    }
                },
                    new[] { nameof(BulkUpdateItemComposite.Id1), nameof(BulkUpdateItemComposite.Id2), nameof(BulkUpdateItemComposite.DataValue) });

                bulkUpdate.DestinationTableName = Composite_TableName;
                bulkUpdate.PrimaryKeyColumn     = nameof(BulkUpdateItemComposite.Id1) + ", " + nameof(BulkUpdateItemComposite.Id2);
                await bulkUpdate.UpdateAsync(dataToUpdate);

                actualData = LoadDataForTableWithCompositePk(cn, Composite_TableName);
            }

            actualData.Should().Equal(new List <BulkUpdateItemComposite>(new[]
            {
                new BulkUpdateItemComposite()
                {
                    Id1 = 1, Id2 = 1, DataValue = "1 - 1"
                },
                new BulkUpdateItemComposite()
                {
                    Id1 = 1, Id2 = 2, DataValue = "lorem ipsum 1"
                },
                new BulkUpdateItemComposite()
                {
                    Id1 = 2, Id2 = 1, DataValue = "2 - 1"
                },
                new BulkUpdateItemComposite()
                {
                    Id1 = 2, Id2 = 2, DataValue = "lorem ipsum 2"
                },
                new BulkUpdateItemComposite()
                {
                    Id1 = 3, Id2 = 1, DataValue = "3 - 1"
                },
                new BulkUpdateItemComposite()
                {
                    Id1 = 3, Id2 = 2, DataValue = "lorem ipsum 3"
                },
            }));
        }
Ejemplo n.º 2
0
        public void UpdateManyItems()
        {
            IEnumerable <BulkUpdateItem> data = GetItems();

            using (var reader = new EnumerableDataReader <BulkUpdateItem>(data, new string[] { "Id", "Name" }))
            {
                using (var bulkUpdate = new MsAccessBulkUpdate("connection string"))
                {
                    bulkUpdate.Update(reader);
                }
            }
        }
        private void DataTableBulkUpdateCore(OleDbConnection cn)
        {
            DataTable expectedData = CreateExpectedData();

            using (var bulkUpdate = new MsAccessBulkUpdate(cn))
            {
                bulkUpdate.DestinationTableName = TableName;
                bulkUpdate.PrimaryKeyColumn     = PrimaryKeyColumn;
                bulkUpdate.Update(expectedData);
            }

            DataTable actualData = LoadData(cn);

            MsAccessBulkHelper.CompareTables(actualData, expectedData);
        }
        private void IBulkActionDataReaderBulkUpdateCore(
            OleDbConnection cn,
            DataTable expectedData,
            Action <IDbConnection, IDbTransaction, string> action)
        {
            using (IBulkActionDataReader reader = CreateDataReaderForUpdate())
                using (var bulkUpdate = new MsAccessBulkUpdate(cn))
                {
                    bulkUpdate.DestinationTableName = TableName;
                    bulkUpdate.PrimaryKeyColumn     = PrimaryKeyColumn;
                    bulkUpdate.TempTableAction      = action;
                    bulkUpdate.Update(reader);
                }

            DataTable actualData = LoadData(cn);

            MsAccessBulkHelper.CompareTables(actualData, expectedData);
        }
        public async Task BulkUpdateDataFromIDataReaderIntoMdbAsynchronously()
        {
            Helpers.SkipTestIfJetProviderNotAvailable();
            using (var helper = CreateHelper(ProviderType.Jet, MdbFileName))
            {
                DataTable expectedData = CreateExpectedData();

                using (IDataReader reader = expectedData.CreateDataReader())
                    using (var bulkUpdate = new MsAccessBulkUpdate(helper.Connection))
                    {
                        bulkUpdate.DestinationTableName = TableName;
                        bulkUpdate.PrimaryKeyColumn     = PrimaryKeyColumn;
                        await bulkUpdate.UpdateAsync(reader);
                    }

                DataTable actualData = LoadData(helper.Connection);
                MsAccessBulkHelper.CompareTables(actualData, expectedData);
            }
        }
        public void BulkUpdateDataFromIDataReaderIntoMdbSynchronouslyWithoutDeadLock()
        {
            AsyncContext.Run(() =>
            {
                Helpers.SkipTestIfJetProviderNotAvailable();
                using (var helper = CreateHelper(ProviderType.Jet, MdbFileName))
                {
                    DataTable expectedData = CreateExpectedData();

                    using (IBulkActionDataReader reader = CreateDataReaderForUpdate())
                        using (var bulkUpdate = new MsAccessBulkUpdate(helper.Connection))
                        {
                            bulkUpdate.DestinationTableName = TableName;
                            bulkUpdate.PrimaryKeyColumn     = PrimaryKeyColumn;
                            bulkUpdate.Update(reader);
                        }

                    DataTable actualData = LoadData(helper.Connection);
                    MsAccessBulkHelper.CompareTables(actualData, expectedData);
                }
            });
        }