0

我正在尝试使用 OrmLite 在 F# 3.0 中构建一个简单的 Count 函数,如下所示:

let x = 
    use conn = dbFactory.Open() //IDbConnection
    conn.Count<Area>(fun (x:Area) -> x.parent_id.GetValueOrDefault(0) > 0)

在哪里

type Area() =
    //...
    member val parent_id = Nullable<_>() with get, set

但我得到错误:

System.InvalidOperationException: variable 'x' of type 'FSI_0029.Area' referenced from scope '', but it is not defined

以下作品:

let x = 
    use conn = dbFactory.Open()
    conn.Count<Area>(fun (x:Area) -> x.id > 0)

所以我认为它与 Nullable<_> 类型有关。

有没有人遇到过这个问题?

提前谢谢了,

4

1 回答 1

0

通常与成员变量关联的函数需要在 Sql builder(for Expressions) 中进行映射;例如,字符串的 ToUpper() 函数在内部映射到 sql 的 UPPER() 函数。由于 Sql Builder 不知道 GetValueOrDefault 是什么(因为这个函数没有映射到任何 SQL 函数),所以它出错了。我不确定可以为此使用什么 SQL 语句,如果您有有效的案例,请在 Github 中创建票证。

于 2013-08-09T23:47:14.850 回答