Skip to content

Commit 94fa5ea

Browse files
Dispose transaction.
1 parent 665ff8a commit 94fa5ea

5 files changed

Lines changed: 17 additions & 11 deletions

File tree

src/PhenX.EntityFrameworkCore.BulkInsert.MySql/MySqlBulkInsertProvider.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@ public MySqlBulkInsertProvider(ILogger<MySqlBulkInsertProvider>? logger = null)
2525
/// <inheritdoc />
2626
protected override string GetTempTableName(string tableName) => $"#_temp_bulk_insert_{tableName}";
2727

28+
/// <inheritdoc />
29+
public override Task<List<T>> BulkInsertReturnEntities<T>(
30+
bool sync,
31+
DbContext context,
32+
IEnumerable<T> entities,
33+
BulkInsertOptions options,
34+
OnConflictOptions? onConflict = null,
35+
CancellationToken ctk = default)
36+
{
37+
throw new NotSupportedException("Provider does not support returning entities.");
38+
}
39+
2840
/// <inheritdoc />
2941
protected override async Task BulkInsert<T>(
3042
bool sync,

src/PhenX.EntityFrameworkCore.BulkInsert.MySql/MySqlDialectBuilder.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ internal class MySqlServerDialectBuilder : SqlDialectBuilder
1616

1717
protected override bool SupportsMoveRows => false;
1818

19-
public override bool SupportsReturning => false;
20-
2119
protected override void AppendConflictCondition<T>(StringBuilder sql, OnConflictOptions<T> onConflictTyped)
2220
{
2321
throw new NotSupportedException("Conflict conditions are not supported in MYSQL");

src/PhenX.EntityFrameworkCore.BulkInsert/BulkInsertProviderBase.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,6 @@ private async Task<List<TResult>> CopyFromTempTableWithoutKeysAsync<T, TResult>(
112112
var movedProperties = context.GetProperties(typeof(T), options.CopyGeneratedColumns);
113113
var returnedProperties = returnData ? context.GetProperties(typeof(T)) : [];
114114

115-
if (returnData && !SqlDialect.SupportsReturning)
116-
{
117-
throw new NotSupportedException("Provider does not support returning entities.");
118-
}
119-
120115
var query = SqlDialect.BuildMoveDataSql<T>(context, tempTableName, quotedTableName, movedProperties, returnedProperties, options, onConflict);
121116

122117
if (returnData)
@@ -144,7 +139,7 @@ static async Task<List<TResult>> QueryAsync(bool sync, DbContext context, string
144139
}
145140
}
146141

147-
public async Task<List<T>> BulkInsertReturnEntities<T>(
142+
public virtual async Task<List<T>> BulkInsertReturnEntities<T>(
148143
bool sync,
149144
DbContext context,
150145
IEnumerable<T> entities,
@@ -173,10 +168,12 @@ private static async Task Finish(bool sync, DbConnection connection, bool wasClo
173168
{
174169
// ReSharper disable once MethodHasAsyncOverloadWithCancellation
175170
transaction.Commit();
171+
transaction.Dispose();
176172
}
177173
else
178174
{
179175
await transaction.CommitAsync(ctk);
176+
await transaction.DisposeAsync();
180177
}
181178
}
182179

@@ -194,7 +191,7 @@ private static async Task Finish(bool sync, DbConnection connection, bool wasClo
194191
}
195192
}
196193

197-
public async Task BulkInsert<T>(
194+
public virtual async Task BulkInsert<T>(
198195
bool sync,
199196
DbContext context,
200197
IEnumerable<T> entities,

src/PhenX.EntityFrameworkCore.BulkInsert/Dialect/SqlDialectBuilder.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ internal abstract class SqlDialectBuilder
1616

1717
protected virtual string ConcatOperator => "||";
1818
protected virtual bool SupportsMoveRows => true;
19-
public virtual bool SupportsReturning => true;
2019

2120
/// <summary>
2221
/// Gets the name of the column for a property in a given entity type.

tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerMySql.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class TestDbContainerMySql<TDbContext> : TestDbContainer<TDbContext>
1616
{
1717
return new MySqlBuilder()
1818
.WithReuse(true)
19-
.WithCommand("--log-bin-trust-function-creators=1", "--local-infile=1")
19+
.WithCommand("--log-bin-trust-function-creators=1", "--local-infile=1", "--innodb-print-all-deadlocks=ON")
2020
.Build();
2121
}
2222

0 commit comments

Comments
 (0)