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