fsprojects / fsprojects/FSharp.Data.SqlClient
SqlProgrammabilityProvider generates wrong `Execute` method if SP has default to null output parameter
Nessuno ha ancora preso questa issue.
- Lingua principale
- F#
- Stelle
- 206
- Fork
- 66
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
create procedure sh.SGet
@STable dbo.SmallIntTable readonly,
@ToDate datetime = null output,
@no_resultset bit = 0
as
begin
set transaction isolation level read uncommitted
if @no_resultset = 1
select top 1 @ToDate = s.ToDate
from dbo.xxx s
join @STable t
on t.[value] = s.ID
else
select
s.ID
, s.ID1
, s.[Address]
, s.UpdatePeriod
, ...
from dbo.S s
join @STable t
on t.[value] = s.ID
end
use cmd = DB.sh.SGet (connStr, TimeSpan.FromMinutes 1.)
let idTable = ids |> Seq.map WL.dbo.``User-Defined Table Types``.SmallIntTable
let records = cmd.Execute (idTable)
Several issues here:
ExecuteAsyncis not generated at all- It does not compile:
Error The type provider 'FSharp.Data.SqlProgrammabilityProvider' reported an error in the context of provided type 'FSharp.Data.SqlProgrammabilityProvider,ConnectionStringOrName="Data Source=test_server; Initial Catalog=TEST; Integrated Security=True"+sh+SGet', member 'Execute'. The error: Type mismatch when building 'args': invalid parameter for a method or indexer property. Expected 'System.DateTime&', but received type 'Microsoft.FSharp.Core.FSharpOption`1[System.DateTime]'.
Parameter name: receivedType
Execute has the following signature:

Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci il problema con la procedura SQL mostrata e la chiamata F# tramite SqlProgrammabilityProvider. Esamina il modo in cui il provider genera Execute e ExecuteAsync per il nullable output parameter. Il lavoro è completato quando Execute accetta i tipi degli argomenti generati, compila e ExecuteAsync viene generato per questa procedura.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- sql
- Ambito
- databases
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100