diff --git a/src/SqlClient.DesignTime/DesignTime.fs b/src/SqlClient.DesignTime/DesignTime.fs index 735d6edc..ce3393a1 100644 --- a/src/SqlClient.DesignTime/DesignTime.fs +++ b/src/SqlClient.DesignTime/DesignTime.fs @@ -761,10 +761,9 @@ type DesignTime private() = <@@ let cmd = (%%command : ISqlCommand) cmd.Raw.Connection @@> - <@@ do - use create = (%%connection : SqlConnection).CreateCommand(CommandText = tempTableDefinitions) - create.ExecuteNonQuery() |> ignore - + <@@ use openedConn = (%%connection : SqlConnection).UseLocally() + use create = (%%connection : SqlConnection).CreateCommand(CommandText = tempTableDefinitions) + create.ExecuteNonQuery() |> ignore (%%loadValues exprArgs connection) ignore() @@>) diff --git a/tests/SqlClient.Tests/TempTableTests.fs b/tests/SqlClient.Tests/TempTableTests.fs index 52deeac2..e00b5e36 100644 --- a/tests/SqlClient.Tests/TempTableTests.fs +++ b/tests/SqlClient.Tests/TempTableTests.fs @@ -17,6 +17,28 @@ type TempTable = ConnectionStringOrName = ConnectionStrings.AdventureWorksLiteral> +[] +let usingTempTableWithConnectionString() = + // Regression test for issue #306: LoadTempTables should auto-open the connection + use cmd = new TempTable(ConnectionStrings.AdventureWorksLiteral) + + cmd.LoadTempTables( + Temp = + [ TempTable.Temp(Id = 1, Name = Some "cat") + TempTable.Temp(Id = 2, Name = Some "dog") ]) + + let actual = + cmd.Execute() + |> Seq.map(fun x -> x.Id, x.Name) + |> Seq.toList + + let expected = [ + 1, Some "cat" + 2, Some "dog" + ] + + Assert.Equal<_ list>(expected, actual) + [] let usingTempTable() = use conn = new SqlConnection(ConnectionStrings.AdventureWorksLiteral)