У меня есть дискриминированные союзы, подобные этому
type AbcJson = JsonProvider<"""
{
"Id": 1234,
"List": [
{
"BT": "abc",
"Year": 2019,
"A": 9223372036854775806
},
{
"BT": "bottomUp",
"Year": 2019
}
]
}
""">
type Event =
| Cdf of CdfJson.Root
| Abc of AbcJson.Root
У меня также есть функция, которая возвращает значение из db
type g = SqlCommandProvider<"
Select [BT], [Year], [A] from dbo.Abc;
" , connectionString>
let dbGet =
use cmd = new g(connectionString)
let data = cmd.Execute()
data |> Seq.toArray
let data = dbGet
printfn "%A" data
// [|{ BT = "abc"; Year = 2019; A = Some 1L };
// { BT = "abc"; Year = 2019; A = None }|]
Но когда я пытаюсь сделать это
let q = Abc(AbcJson.Root(1002, data));
Я получаю такую ошибку
Type mismatch. Expecting a
'JsonProvider‹...>.List []'
but given a 'SqlCommandProvider<...>.Record []'
The type 'JsonProvider‹...>.List' does not match the type
'SqICommandProvider<...>.Record'
Я не могу разыграть SqlCommandProvider<...>.Record [] to JsonProvider‹...>.List []
.Что я могу сделать, чтобы разыграть SqlCommandProvider<...>.Record [] to JsonProvider‹...>.List []
?Некоторая справка или документ будут действительно полезны.