Skip to content

Commit 3b5169c

Browse files
Merge pull request #401 from smoothdeveloper/datetimeoffset-and-co-sqlazure
tentative fix for #393 (sqlazure datetimeoffset & others in TVP)
2 parents 4787180 + 3bd52f4 commit 3b5169c

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

RELEASE_NOTES.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
#### 2.1.0 December dd, 2020
2+
3+
* SQL Azure handling of `datetimeoffset`, `datetime2`, `time` causing `SqlMetaData` constructor exception (#393)
4+
* Breaking change: Optional parameters are required at call site (#348)
5+
* Breaking change: move anything defined in `FSharp.Data` namespace to `FSharp.Data.SqlClient` (#359)
6+
* Contributors: Christer van der Meeren (https://github.com/cmeeren), Gauthier Segay (https://github.com/smoothdeveloper)
7+
18
#### 2.0.7 November 18, 2020
29

310
* Issue #345 Decimal values are trimmed when used as part of a TVP

src/SqlClient.DesignTime/DesignTime.fs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -542,10 +542,18 @@ type DesignTime private() =
542542
let precision = byte p.Precision
543543
let scale = byte p.Scale
544544
if typeInfo.IsFixedLength then
545-
if scale = 0uy then
546-
<@@ SqlMetaData(name, dbType) @@>
547-
else
548-
<@@ SqlMetaData(name, dbType, precision, scale) @@>
545+
match name, dbType with
546+
| "datetime2" , SqlDbType.DateTime2
547+
| "datetimeoffset", SqlDbType.DateTimeOffset
548+
| "time" , SqlDbType.Time ->
549+
// https://github.com/fsprojects/FSharp.Data.SqlClient/issues/393
550+
<@@ SqlMetaData(name, dbType, 0uy, scale) @@>
551+
| _ ->
552+
// https://github.com/fsprojects/FSharp.Data.SqlClient/issues/345
553+
if scale = 0uy then
554+
<@@ SqlMetaData(name, dbType) @@>
555+
else
556+
<@@ SqlMetaData(name, dbType, precision, scale) @@>
549557
else
550558
let maxLength = int64 p.MaxLength
551559
<@@ SqlMetaData(name, dbType, maxLength) @@>

tests/SqlClient.Tests/TVPTests.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ let ``issue #345 decimal in TVP gets rounded`` () =
202202

203203
[<Fact>]
204204
let ``issue #393 troubleshoot if datetimeoffset raises an exception`` () =
205+
// N.B, this should be tested against SQL Azure
205206
let value = System.DateTimeOffset.UtcNow
206207
let tvp = [AdventureWorks.dbo.``User-Defined Table Types``.datetimeoffset_test_tvp(value)]
207208
use cmd = new AdventureWorks.dbo.datetimeoffset_test(ConnectionStrings.AdventureWorksLiteral)

0 commit comments

Comments
 (0)