如何通过Starcounter DB的SQL语句或代码获取表名和定义列表?
答案 0 :(得分:3)
有关已创建表,其列和索引的元数据存储在元数据表中。数据库类是公开公开的,用于相应的元数据表。
表格或类型由Starcounter.Metadata.RawView
和Starcounter.Metadata.ClrClass
描述,并且都延伸Starctouner.Metadata.Table
。 ClrClass
仅包含已加载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
描述。
目前,它是数据库类和表之间的一对一匹配。但是,此元数据架构和元数据架构将来可能会发生变化。