1- using System . Data ;
2- using System . Data . Common ;
31using EfCore . BulkOperations . API . Models ;
42using Microsoft . EntityFrameworkCore ;
5- using Microsoft . EntityFrameworkCore . Storage ;
63
74namespace EfCore . BulkOperations . API . Repositories ;
85
@@ -57,14 +54,9 @@ public async Task<int> BulkMergeProducts(List<Product> products)
5754
5855 public async Task SyncDataThenCommit ( List < Product > list1 , List < Product > list2 )
5956 {
60- IDbContextTransaction ? transaction = null ;
61- DbConnection ? connection = null ;
6257 try
6358 {
64- connection = dbContext . Database . GetDbConnection ( ) ;
65- if ( connection . State != ConnectionState . Open ) await connection . OpenAsync ( ) ;
66- transaction = await dbContext . Database . BeginTransactionAsync ( ) ;
67- var dbTransaction = transaction . GetDbTransaction ( ) ;
59+ var dbTransaction = await dbContext . BeginTransactionAsync ( ) ;
6860
6961 await dbContext . BulkInsertAsync (
7062 list1 ,
@@ -76,29 +68,20 @@ await dbContext.BulkInsertAsync(
7668 dbTransaction ) ;
7769 await dbContext . BulkInsertAsync ( list2 , null , dbTransaction ) ;
7870
79- await transaction . CommitAsync ( ) ;
71+ await dbContext . CommitAsync ( ) ;
8072 }
8173 catch ( Exception )
8274 {
83- if ( transaction is not null ) await transaction . RollbackAsync ( ) ;
75+ await dbContext . RollbackAsync ( ) ;
8476 throw ;
8577 }
86- finally
87- {
88- if ( connection is { State : ConnectionState . Open } ) await connection . CloseAsync ( ) ;
89- }
9078 }
9179
9280 public async Task SyncDataThenRollback ( Product item1 , List < Product > list2 , List < Product > list3 )
9381 {
94- IDbContextTransaction ? transaction = null ;
95- DbConnection ? connection = null ;
9682 try
9783 {
98- connection = dbContext . Database . GetDbConnection ( ) ;
99- if ( connection . State != ConnectionState . Open ) await connection . OpenAsync ( ) ;
100- transaction = await dbContext . Database . BeginTransactionAsync ( ) ;
101- var dbTransaction = transaction . GetDbTransaction ( ) ;
84+ var dbTransaction = await dbContext . BeginTransactionAsync ( ) ;
10285
10386 await dbContext . Products . AddAsync ( item1 ) ;
10487 await dbContext . SaveChangesAsync ( ) ;
@@ -109,12 +92,8 @@ public async Task SyncDataThenRollback(Product item1, List<Product> list2, List<
10992 }
11093 catch ( Exception )
11194 {
112- if ( transaction is not null ) await transaction . RollbackAsync ( ) ;
95+ await dbContext . RollbackAsync ( ) ;
11396 throw ;
11497 }
115- finally
116- {
117- if ( connection is { State : ConnectionState . Open } ) await connection . CloseAsync ( ) ;
118- }
11998 }
12099}
0 commit comments