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

问题描述 投票:3回答:2

我在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。

我错了吗 ?如果没有,有没有办法规避它?

非常感谢您的帮助 !

f# ormlite-servicestack
2个回答
3
投票

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

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

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

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


1
投票

您可以使用'CLIMutable'属性。

[<CLIMutable>]
type TestType = {[<AutoIncrement>][<PrimaryKey>]A: int; B: string}
© www.soinside.com 2019 - 2024. All rights reserved.