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++; } } }
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++; } } }