2014-11-03 41 views
1

所以我只是在學習Cache,並且有關於表,類和全局的問題,有什麼區別?SQL表名===類名?反之亦然?

我在做教程,它看起來像,因爲這是一個面向對象的數據庫,類是一個表,反之亦然。因此,如果我創建一個類並使其與屬性保持一致,那麼我可以使用SQL來查詢它。這是真的?什麼是全球性的呢?

我想問的原因是因爲我爲我們的一個緩存應用程序使用管理門戶,儘管我可以在WinSQL和Documatic中看到一個表,但該表似乎並不存在於類瀏覽器中(管理門戶)...無法弄清楚,它是隱藏的嗎?有沒有命令在終端看到班級def'ns?

謝謝!

回答

4

在Caché中,類是表和表是類。您可以選擇何時使用SQL訪問以及何時使用面向對象的訪問。

全局變量是稀疏的多維數組,它作爲存儲在類/表之下。查看課程末尾的存儲定義以查看您的持久類存儲在的實際全局變量(例如^ Sample.PersonD)

默認情況下,類名稱被映射爲表名,但有一些規則適用爲了確保表名符合SQL標準:「」

  • ,如果你有一類就是一對夫婦包深(如MyApp.Data.Person)的則除了最後將被表中的「_」替換(例如,MyApp_Data.Person將是表名)
  • 您不能在表名中使用保留的SQL關鍵字,因此如果您在User包中創建了一些內容(例如class :User.Person),那麼緩存會更改包的名稱(例如SQLUser.Person將是表的名稱)

我建議你向http://docs.intersystems.com/cache20141/csp/docbook/DocBook.UI.Page.cls?KEY=GORIENT_ch_persistence更多細節