f# - ServiceStack.OrmLite 自动增量不适用于 F#

标签 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。

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

非常感谢您的帮助!

最佳答案

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

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

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

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

关于f# - ServiceStack.OrmLite 自动增量不适用于 F#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18037528/

相关文章:

F# 将函数应用于列表树的每个节点中的值

F# 我可以在数组上使用负索引吗? (就像在 Python 中一样)?

sqlite - CreateParam 没有实现

c# - PredicateBuilder 嵌套 OR 子句,导致大型谓词嵌套太深的问题

c# - 在 ServiceStack AutoQuery 中多次加入同一个表

Servicestack - 将多个 POCO 映射到一张表的可能性

string - F#字符串到int的转换

f# - F#中的模式匹配问题

f# - 在Visual Studio中将NLog与F#Interactive一起使用-需要文档

mysql - ServiceStack和Ormlite保存字符串 "Don’t do it"到MySQL时的编码问题