@@ -9,7 +9,6 @@ namespace SqlBulkHelpers.MaterializedData
99{
1010 public class MaterializeDataContext : IMaterializeDataContextCompletionSource , IMaterializeDataContext
1111 {
12- protected SqlTransaction SqlTransaction { get ; }
1312 protected ILookup < string , MaterializationTableInfo > TableLookupByFullyQualifiedName { get ; }
1413 protected ILookup < string , MaterializationTableInfo > TableLookupByOriginalName { get ; }
1514 protected ISqlBulkHelpersConfig BulkHelpersConfig { get ; }
@@ -80,16 +79,15 @@ public MaterializationTableInfo FindMaterializationTableInfoCaseInsensitive(Type
8079 /// </summary>
8180 public bool EnableDataConstraintChecksOnCompletion { get ; set ; } = true ;
8281
83- public MaterializeDataContext ( SqlTransaction sqlTransaction , MaterializationTableInfo [ ] materializationTables , ISqlBulkHelpersConfig bulkHelpersConfig )
82+ public MaterializeDataContext ( MaterializationTableInfo [ ] materializationTables , ISqlBulkHelpersConfig bulkHelpersConfig )
8483 {
85- SqlTransaction = sqlTransaction . AssertArgumentIsNotNull ( nameof ( sqlTransaction ) ) ;
8684 Tables = materializationTables . AssertArgumentIsNotNull ( nameof ( materializationTables ) ) ;
8785 BulkHelpersConfig = bulkHelpersConfig . AssertArgumentIsNotNull ( nameof ( bulkHelpersConfig ) ) ;
8886 TableLookupByFullyQualifiedName = Tables . ToLookup ( t => t . LiveTable . FullyQualifiedTableName , StringComparer . OrdinalIgnoreCase ) ;
8987 TableLookupByOriginalName = Tables . ToLookup ( t => t . OriginalTableName , StringComparer . OrdinalIgnoreCase ) ;
9088 }
9189
92- internal async Task HandleNonTransactionTasksBeforeMaterialization ( )
90+ internal async Task HandleParallelConnectionTasksBeforeMaterialization ( )
9391 {
9492 //NOW JUST PRIOR to Executing the Materialized Data Switch we must handle any actions required outside of the Materialized Data Transaction (e.g. FullTextIndexes, etc.)
9593 //NOTE: We do this here so that our live tables have the absolute minimum impact; meaning things like Full Text Indexes are Dropped for ONLY the amount of time it takes to execute our Switch
@@ -118,7 +116,7 @@ await tablesWithFullTextIndexes.ForEachAsync(BulkHelpersConfig.MaxConcurrentConn
118116 /// occurs during the Finish Materialization process!!!
119117 /// </summary>
120118 /// <returns></returns>
121- internal async Task HandleNonTransactionTasksAfterMaterialization ( )
119+ internal async Task HandleParallelConnectionTasksAfterMaterialization ( )
122120 {
123121 if ( TablesWithFullTextIndexesRemoved . Any ( ) )
124122 {
@@ -134,7 +132,7 @@ await TablesWithFullTextIndexesRemoved.ForEachAsync(BulkHelpersConfig.MaxConcurr
134132 }
135133 }
136134
137- public async Task FinishMaterializeDataProcessAsync ( )
135+ public async Task FinishMaterializeDataProcessAsync ( SqlTransaction sqlTransaction )
138136 {
139137 var materializationTables = this . Tables ;
140138 var switchScriptBuilder = MaterializedDataScriptBuilder . NewSqlScript ( ) ;
@@ -207,16 +205,10 @@ public async Task FinishMaterializeDataProcessAsync()
207205 //NOTE: FKeys must be explicitly re-enabled to ensure they are restored to Trusted state; they aren't included in the ALL Constraint Check.
208206 . EnableForeignKeyChecks ( materializationTableInfo . LiveTable , this . EnableDataConstraintChecksOnCompletion , liveTableDefinition . ForeignKeyConstraints . AsArray ( ) )
209207 //Re-enable All other Referencing FKey Checks that were disable above to allow the switching above...
210- . EnableReferencingForeignKeyChecks ( this . EnableDataConstraintChecksOnCompletion , otherReferencingFKeyConstraints . AsArray ( ) )
211- //Finally cleanup the Loading and Discarding tables...
212- . DropTable ( materializationTableInfo . LoadingTable )
213- . DropTable ( materializationTableInfo . DiscardingTable ) ;
214-
208+ . EnableReferencingForeignKeyChecks ( this . EnableDataConstraintChecksOnCompletion , otherReferencingFKeyConstraints . AsArray ( ) ) ;
215209 }
216210
217- //var timeoutConvertedToMinutes = Math.Max(1, (int)Math.Ceiling((decimal)BulkHelpersConfig.MaterializeDataStructureProcessingTimeoutSeconds / 60));
218-
219- await SqlTransaction . ExecuteMaterializedDataSqlScriptAsync (
211+ await sqlTransaction . ExecuteMaterializedDataSqlScriptAsync (
220212 switchScriptBuilder ,
221213 BulkHelpersConfig . MaterializeDataStructureProcessingTimeoutSeconds
222214 ) . ConfigureAwait ( false ) ;
0 commit comments