查询以显示Starcounter数据库中的表和表定义

时间:2016-09-14 11:16:04

标签: starcounter

如何通过Starcounter DB的SQL语句或代码获取表名和定义列表?

1 个答案:

答案 0 :(得分:3)

有关已创建表,其列和索引的元数据存储在元数据表中。数据库类是公开公开的,用于相应的元数据表。

表格或类型由Starcounter.Metadata.RawViewStarcounter.Metadata.ClrClass描述,并且都延伸Starctouner.Metadata.TableClrClass仅包含已加载CLR类的描述,而RawView描述所有已创建的表。它们包括用户定义的类/表和元数据类/表的描述。

例如,可以枚举所有加载的用户定义类:

foreach(ClrClass c in Db.SQL<ClrClass>(
    "select c from Starcounter.Metadata.ClrClass c where Updatable = ?", true)) {
  Console.WriteLine(c.FullName);
}

Updatable的{​​{1}}属性Table用于用户定义的表,true用于元数据/系统表。

属性或列由false及其子项描述。枚举所有用户定义表的所有列的示例是:

Starcounter.Metadata.Member

索引由foreach(Member m in Db.SQL<Member>( "select m from Column m, RawView v where m.Table = v and v.Updatable = ?", true)) { Console.WriteLine(m.Name); } Starcounter.Metadata.Index描述。

目前,它是数据库类和表之间的一对一匹配。但是,此元数据架构和元数据架构将来可能会发生变化。