diff --git a/src/EFCore.Relational/Infrastructure/RelationalOptionsExtension.cs b/src/EFCore.Relational/Infrastructure/RelationalOptionsExtension.cs index 50d735b5cdf..3074e5b0094 100644 --- a/src/EFCore.Relational/Infrastructure/RelationalOptionsExtension.cs +++ b/src/EFCore.Relational/Infrastructure/RelationalOptionsExtension.cs @@ -162,7 +162,7 @@ public virtual int? CommandTimeout /// A new instance with the option changed. public virtual RelationalOptionsExtension WithCommandTimeout(int? commandTimeout) { - if (commandTimeout is <= 0) + if (commandTimeout is < 0) { throw new InvalidOperationException(RelationalStrings.InvalidCommandTimeout(commandTimeout)); } diff --git a/test/EFCore.Relational.Tests/RelationalConnectionTest.cs b/test/EFCore.Relational.Tests/RelationalConnectionTest.cs index bd4d8464f6c..e06bf17947a 100644 --- a/test/EFCore.Relational.Tests/RelationalConnectionTest.cs +++ b/test/EFCore.Relational.Tests/RelationalConnectionTest.cs @@ -888,6 +888,26 @@ public void Can_create_new_connection_with_CommandTimeout() Assert.Equal(99, connection.CommandTimeout); } + [ConditionalFact] + public void Can_create_new_connection_with_CommandTimeout_set_to_zero() + { + using var connection = new FakeRelationalConnection( + CreateOptions( + new FakeRelationalOptionsExtension() + .WithConnectionString("Database=FrodoLives") + .WithCommandTimeout(0))); + Assert.Equal(0, connection.CommandTimeout); + } + + [ConditionalFact] + public void Throws_if_create_new_connection_with_CommandTimeout_negative() + { + Assert.Throws( + () => new FakeRelationalOptionsExtension() + .WithConnectionString("Database=FrodoLives") + .WithCommandTimeout(-1)); + } + [ConditionalFact] public void Can_set_CommandTimeout() { @@ -898,6 +918,16 @@ public void Can_set_CommandTimeout() Assert.Equal(88, connection.CommandTimeout); } + [ConditionalFact] + public void Can_set_CommandTimeout_to_zero() + { + using var connection = new FakeRelationalConnection( + CreateOptions(new FakeRelationalOptionsExtension().WithConnectionString("Database=FrodoLives"))); + connection.CommandTimeout = 0; + + Assert.Equal(0, connection.CommandTimeout); + } + [ConditionalFact] public void Throws_if_CommandTimeout_out_of_range() {