質問: 私たちが構築しているレポートアプリケーションに対するlinq to sqlの有用性を調査するように依頼されました。私たちのレポートテーブルは、さまざまなタイプ(String1-500、Int1-500など)の何千もの列を持つSQLサーバー全体のテーブルです。ユーザーが作成した動的レポートの結果を保持します。 レポートフィールドをタイプの序数ペア(つまり、列String1)を使用してレポートテーブルの列にマップする2番目のテーブルがあります。 レポートの結果を返すことができるlinq to sql dbmlクラスに対して式ツリーを構築できるはずです。これを少し進めて、フィールドにマップされる列のみを返し、結果として動的な型を返したいと思います。 また、dbmlで巨大なレポートテーブルクラスを維持することを回避します。 **dbmlにないテーブルに対して動的linqクエリを実行することは可能ですか?(つまり、linq to sqlエンティティではありません)?** これはL2Sの卑劣化であり、私はそれが好きではないことを理解しています。プレーンな古いADOを使用して、型指定されていない結果セットを返すことを検討しています。 どうもありがとう、 イアン
回答: はい、DBMLにないエンティティに対してLINQ to SQLを実行することは可能です。 これを行う方法はいくつかありますが、私が考えることができる最も簡単な方法は、SQLステートメントを実行して結果セットを返すDataContext.ExecuteQueryを呼び出すことです。 結果のタイプがわかっている場合は、オブジェクトにキャストできます。それ以外の場合は、オブジェクトタイプのリストとして返すことができます。