Starcounter DB の SQL ステートメントまたはコード ビハインドを使用して、テーブル名と定義のリストを取得するにはどうすればよいですか?
1 に答える
作成されたテーブル、その列、およびインデックスに関するメタデータは、メタデータ テーブルに格納されます。データベース クラスは、対応するメタデータ テーブルに対してパブリックに公開されます。
テーブルまたは型は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
。
現在、データベース クラスとテーブルは 1 対 1 で一致しています。ただし、これとメタデータ スキーマは将来変更される可能性があります。