Я могу использовать FSharp.Data.SqlProgrammabilityProvider для вызова процедуры моего хранилища, но я не могу понять, как сохранить типы в локальной схеме для удаленного сервера сборки без БД доступ для успешной сборки.
Для запросов к обычным таблицам я могу сохранить локальную схему, которая используется сервером сборки: FSharp.Data.TypeProviders.SqlEntityConnection
Однако SqlEntityConnection не может получить доступ к моей хранимой процедуре.
Хотя SqlProgrammabilityProvider может вызывать мою хранимую процедуру, похоже, у него нет этой опции, поэтому используйте локальную схему.
Я открыт для любого метода, который работает здесь.
let [<Literal>] private CONN = @"Data Source={...}; Initial Catalog={...};Integrated Security=True;Connect Timeout=180"
type myDB = SqlProgrammabilityProvider<CONN>
let cmd = new myDB.dbo.usp_MyStoredProcedure(CONN,commandTimeout=600)
type TVPType = myDB.dbo.``User-Defined Table Types``.MyTableType
type ReturnRecord = myDB.dbo.usp_myStoredProcedure.Record
let createRawRecord (r : ReturnRecord) =
... //Turn into F# record type.
let ids = ["id1"; "id2"] |> Seq.map(fun i -> TVPType(i))
let startDate = ...
let endDate = ...
cmd.AsyncExecute(ids, startDate, endDate)
|> Async.RunSynchronously
|> Seq.map (createRawRecord)
|> Seq.toArray