ServiceStack.OrmLite自动增量无法与F#一起使用

时间:2013-08-03 21:32:58

标签: f# ormlite-servicestack

我在Mono上使用带有F#的OrmLite。

我有以下基本结构:

type NestedTree() =
    static member val table_name = String.Empty with get, set
    //DB fields
    [<AutoIncrement>]
    [<PrimaryKey>]
    member val id = 0 with get, set
    member val parent_id = Nullable<_>(null) with get, set
    member val name = String.Empty with get, set
    member val lft = 0 with get, set
    member val rgt = 0 with get, set
    member val depth = 0 with get, set

但是,使用时不考虑Autoncrement属性:

    use conn = dbFactory.Open()
    let item = ...
    conn.Insert(item)

我认为这是因为F#中的默认值设置为0.

我错了吗?如果没有,有没有办法绕过它?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:3)

看起来这是由于这些属性没有被声明为继承,我使用它们与NestedTree的子类,因此问题。

请参阅http://msdn.microsoft.com/en-us/library/tw5zxet9.aspx

[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple = false, Inherited = true)]

将OrmLite属性标记为可继承是很好的,这样我们就可以继承而不是覆盖。

答案 1 :(得分:1)

您可以使用&#39; CLIMutable&#39;属性。

[<CLIMutable>]
type TestType = {[<AutoIncrement>][<PrimaryKey>]A: int; B: string}