diff --git a/src/PhenX.EntityFrameworkCore.BulkInsert.SqlServer/SqlServerBulkInsertProvider.cs b/src/PhenX.EntityFrameworkCore.BulkInsert.SqlServer/SqlServerBulkInsertProvider.cs index 3f9956b..b4d1e18 100644 --- a/src/PhenX.EntityFrameworkCore.BulkInsert.SqlServer/SqlServerBulkInsertProvider.cs +++ b/src/PhenX.EntityFrameworkCore.BulkInsert.SqlServer/SqlServerBulkInsertProvider.cs @@ -44,7 +44,7 @@ CancellationToken ctk using var bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.TableLock, sqlTransaction); bulkCopy.DestinationTableName = tableName; bulkCopy.BatchSize = options.BatchSize ?? 50_000; - bulkCopy.BulkCopyTimeout = 60; + bulkCopy.BulkCopyTimeout = options.GetCopyTimeoutInSeconds(); foreach (var prop in properties) { diff --git a/src/PhenX.EntityFrameworkCore.BulkInsert/Options/BulkInsertOptions.cs b/src/PhenX.EntityFrameworkCore.BulkInsert/Options/BulkInsertOptions.cs index cda5241..e42cd1a 100644 --- a/src/PhenX.EntityFrameworkCore.BulkInsert/Options/BulkInsertOptions.cs +++ b/src/PhenX.EntityFrameworkCore.BulkInsert/Options/BulkInsertOptions.cs @@ -1,4 +1,4 @@ -namespace PhenX.EntityFrameworkCore.BulkInsert.Options; +namespace PhenX.EntityFrameworkCore.BulkInsert.Options; /// /// Bulk insert general options. @@ -32,4 +32,14 @@ public class BulkInsertOptions /// /// public int? BatchSize { get; set; } + + /// + /// The timeout to copy records. + /// + public TimeSpan CopyTimeout = TimeSpan.FromMinutes(10); + + internal int GetCopyTimeoutInSeconds() + { + return Math.Max(0, (int)CopyTimeout.TotalSeconds); + } }