15
我在寫使用Scala和Anorm訪問數據庫的Playframework 2.0應用程序。anorm的Pk的目的是什麼?
目前我使用Pk[Long]
爲id
字段,我擔心需要額外的get
調用來訪問實際值。所以我開始使用Long
爲id
字段,並且所有東西仍然完美。
Pk
是爲了什麼,我應該用它來代替普通類型嗎? Pk
能否爲普通類型提供額外的功能/優點?
我在寫使用Scala和Anorm訪問數據庫的Playframework 2.0應用程序。anorm的Pk的目的是什麼?
目前我使用Pk[Long]
爲id
字段,我擔心需要額外的get
調用來訪問實際值。所以我開始使用Long
爲id
字段,並且所有東西仍然完美。
Pk
是爲了什麼,我應該用它來代替普通類型嗎? Pk
能否爲普通類型提供額外的功能/優點?
Pk
允許您指定一個鍵入的主鍵。
而且,說你有一個人爲的模式是這樣的:
case class MyModel(id: Pk[Long], foo: String)
您與您的構建模型的實例的好處:
MyModel(anorm.NotAssigned, "notKnownAtRuntime")
...如果你的數據庫負責以生成您的密鑰或以其他方式:
MyModel(anorm.Id(123L), "knownAtRuntime")
我知道'NotAssigned',它很方便,因爲id會自動生成一個LLY。我只是覺得還有別的東西。不管怎樣,謝謝你! – lambdas
爲什麼不使用Option [Long],然後用'None'或'Some(123L)'初始化對象? – maklemenz
@mklemenz因爲'''case case MyModel(id:Pk [Long],id2:Pk [Long])'''''''case case MyModel(id:Option [Long],id2:Option [長])'''編譯 –