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