これらがカスタム作成されたオブジェクトであることを明確にして、リフレクションを使用しようとしていると思います。具体的には、 Object.GetType() の呼び出しから返されるPropertyInfoクラスは、必要なものを提供します。テーブルの子オブジェクトと列の孫オブジェクトを含むデータベース オブジェクトのオブジェクト グラフがある場合は、必要に応じて名前と型に関する情報を取得するために、それぞれで GetType() を呼び出してグラフを反復処理する必要があります。
リフレクションは高速でも高性能でもありませんが、必要なものは得られるはずです。
参照しているオブジェクトがデータベース テクノロジからのものである場合:
Context.MetaDataWorkspaceを見てください。特に .GetItems() を見てください。 これは、その方法を示す良い例/デモです。「EntityTypes」セクションと「EntityTypes and Properties」セクションを見てください。
抜粋されたコード:
var query = from meta in context.MetadataWorkspace.GetItems(DataSpace.CSpace)
where meta.BuiltInTypeKind == BuiltInTypeKind.EntityType
select (meta as EntityType).Name;
これにより、テーブルと列のリストが取得されます。特定の SQL サーバー上のデータベースのリストをエンティティ コンテキストから取得することはできません。エンティティ コンテキストは、追加されたアイテムのみを認識し、データベースをコンテキストに追加しません。
また、JSON で返すことができるように要求されていることに気付きました。上記の結果セットを使用すると、ループして手動で JSON を構築するか、JSON としてシリアル化可能なオブジェクトを構築できるはずです。