如何通过 SQL 语句或 Starcounter DB 背后的代码获取表名和定义列表?
问问题
161 次
1 回答
3
有关已创建表、其列和索引的元数据存储在元数据表中。数据库类针对相应的元数据表公开。
表或类型由Starcounter.Metadata.RawView
andStarcounter.Metadata.ClrClass
和 both extends描述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
的属性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
和描述Starcounter.Metadata.IndexedColumn
。
目前它是数据库类和表之间的一对一匹配。但是,这个和元数据模式将来可能会改变。
于 2016-09-14T12:40:02.133 回答