Linq.Expression with Nullable<'T>类型

时间:2013-08-06 09:47:21

标签: linq f# ormlite-servicestack f#-3.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&lt; _&gt;有关。类型。

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

非常感谢,

1 个答案:

答案 0 :(得分:0)

通常,与成员变量关联的函数需要在Sql构建器中映射(对于表达式);例如,字符串的ToUpper()函数在内部映射到sql的UPPER()函数。由于Sql Builder不知道什么是GetValueOrDefault(因为此函数未映射到任何SQL函数),所以它是错误的。我不确定可以使用哪种SQL语句,如果你有一个有效的案例,请在Github中创建一个票据。