예제 #1
0
        public async Task TestBulkInsertOrUpdateWithMultipleCustomMatchQualifiersAsync()
        {
            var testData = TestHelpers.CreateTestDataWithIdentitySetter(10);
            int count    = 1;

            foreach (var t in testData)
            {
                t.Id  = count++;
                t.Key = $"MULTIPLE_QUALIFIER_TEST-{t.Key}";
            }

            var sqlConnectionString = SqlConnectionHelper.GetSqlConnectionString();
            ISqlBulkHelpersConnectionProvider sqlConnectionProvider = new SqlBulkHelpersConnectionProvider(sqlConnectionString);

            using (var conn = await sqlConnectionProvider.NewConnectionAsync())
                using (SqlTransaction transaction = conn.BeginTransaction())
                {
                    ISqlBulkHelper <TestElement> sqlBulkIdentityHelper = new SqlBulkIdentityHelper <TestElement>(
                        sqlConnectionProvider, TestHelpers.SqlTimeoutSeconds);

                    var results = await sqlBulkIdentityHelper.BulkInsertOrUpdateAsync(
                        testData,
                        TestHelpers.TestTableName,
                        transaction,
                        new SqlMergeMatchQualifierExpression(
                            nameof(TestElement.Id),
                            nameof(TestElement.Value),
                            nameof(TestElement.Key)
                            )
                        );

                    transaction.Commit();

                    //ASSERT Results are Valid...
                    Assert.IsNotNull(results);

                    //We Sort the Results by Identity Id to ensure that the inserts occurred in the correct
                    //  order with incrementing ID values as specified in the original Data!
                    //This validates that data is inserted as expected for Identity columns so that it can
                    //  be correctly sorted by Incrementing Identity value when Queried (e.g. ORDER BY Id)
                    var resultsSorted = results.OrderBy(r => r.Id).ToList();
                    Assert.AreEqual(resultsSorted.Count(), testData.Count);

                    var i = 0;
                    foreach (var result in resultsSorted)
                    {
                        Assert.IsNotNull(result);
                        Assert.IsTrue(result.Id > 0);
                        Assert.AreEqual(result.Key, testData[i].Key);
                        Assert.AreEqual(result.Value, testData[i].Value);
                        i++;
                    }
                }
        }
예제 #2
0
        public async Task TestBulkInsertResultSortOrderWithIdentitySetterSupportAsync()
        {
            var testData = TestHelpers.CreateTestDataWithIdentitySetter(10);

            var sqlConnectionString = SqlConnectionHelper.GetSqlConnectionString();
            ISqlBulkHelpersConnectionProvider sqlConnectionProvider = new SqlBulkHelpersConnectionProvider(sqlConnectionString);

            var sqlBulkHelpersSchemaLoader = SqlBulkHelpersSchemaLoaderCache.GetSchemaLoader(sqlConnectionProvider);

            using (var conn = await sqlConnectionProvider.NewConnectionAsync())
                using (SqlTransaction transaction = conn.BeginTransaction())
                {
                    ISqlBulkHelper <TestElement> sqlBulkIdentityHelper = new SqlBulkIdentityHelper <TestElement>(sqlBulkHelpersSchemaLoader);

                    var results = await sqlBulkIdentityHelper.BulkInsertOrUpdateAsync(
                        testData,
                        TestHelpers.TestTableName,
                        transaction
                        );

                    transaction.Commit();

                    //ASSERT Results are Valid...
                    Assert.IsNotNull(results);

                    //We Sort the Results by Identity Id to ensure that the inserts occurred in the correct
                    //  order with incrementing ID values as specified in the original Data!
                    //This validates that data is inserted as expected for Identity columns so that it can
                    //  be correctly sorted by Incrementing Identity value when Queried (e.g. ORDER BY Id)
                    var resultsSorted = results.OrderBy(r => r.Id).ToList();
                    Assert.AreEqual(resultsSorted.Count(), testData.Count);

                    var i = 0;
                    foreach (var result in resultsSorted)
                    {
                        Assert.IsNotNull(result);
                        Assert.IsTrue(result.Id > 0);
                        Assert.AreEqual(result.Key, testData[i].Key);
                        Assert.AreEqual(result.Value, testData[i].Value);
                        i++;
                    }
                }
        }