2014-11-03 38 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更多细节