SQLProvider
SQLProvider copied to clipboard
Cannot negate Option.IsSome condition?
Is your feature request related to a problem? Please describe.
I seem not to be able to negate a boolean Option.IsSome or a boolean Option.IsNone.
Also the error messaging of what is unsupported is not very clear.
Describe the solution you'd like
let ctx = DataContext.getDataContextWithLog()
query {
for p in ctx.Dbo.Patients do
where (not p.DischargeDate.IsSome)
// where (p.DischargeDate.IsNone)
select p
}
|> Seq.length
This code fails with:
System.Exception: Unsupported expression. Ensure all server-side objects won't have any .NET-operators/methods that can't be converted to SQL. The In and Not In operators only support the inline array syntax. Not(get_IsSome(p.GetColumnOption("DischargeDate"))) at Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.EvaluateQuotation(FSharpExpr e) in F:\workspace_work\1\s\src\fsharp\FSharp.Core\Linq.fs:line 718 at Microsoft.FSharp.Linq.QueryModule.EvalNonNestedInner(CanEliminate canElim, FSharpExpr queryProducingSequence) in F:\workspace_work\1\s\src\fsharp\FSharp.Core\Query.fs:line 1823 at Microsoft.FSharp.Linq.QueryModule.clo@1926-15.Microsoft.FSharp.Linq.ForwardDeclarations.IQueryMethods.Execute[a,b](FSharpExpr`1 q) in F:\workspace_work\1\s\src\fsharp\FSharp.Core\Query.fs:line 1928 at <StartupCode$FSI_0035>.$FSI_0035.main@() Stopped due to error
Describe alternatives you've considered See commented code line above, which works.
seems reasonable and easy addition
This should work with the latest version.