From 5c6e2c7221d81029c886428f70eb3a9824aa1c1c Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Wed, 21 May 2025 09:24:07 +0200 Subject: [PATCH] Do not hardcode copy timeout. --- .../SqlServerBulkInsertProvider.cs | 2 +- .../Options/BulkInsertOptions.cs | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) 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); + } }