0

私は3つのエンティティを持っています:1。データベース2.データベースにコレクションがあるテーブル3.テーブルにコレクションがある列

遅延読み込みが有効になっている間=false

それぞれのテーブルの配列を含む各データベース、それぞれの列の配列を含む各テーブルを含むjson文字列を返すにはどうすればよいですか?

アップデート:

特定のクラスのインスタンスを無効にすることを犠牲にして、次のJsonスクリプトを返すことができました。

ここに画像の説明を入力してください

これが私が探しているリターンです。ただし、列とテーブルの関係、およびテーブルとデータベースの関係をそれぞれのクラスに並べる必要があり、それはやりたくありませんでした。

最初に外部クラスに対して[ScriptIgnore]アノテーションを試しましたが、うまくいきませんでした

4

1 に答える 1

1

これらがカスタム作成されたオブジェクトであることを明確にして、リフレクションを使用しようとしていると思います。具体的には、 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 としてシリアル化可能なオブジェクトを構築できるはずです。

于 2012-12-04T20:22:35.050 に答える