開発者とエンド ユーザーの両方が、SQL コードをまったく記述せずに (実行時に選択された) リレーショナル DB からデータを取得できるアプリケーションを作成しようとしています (データベースと対話するときに文字列を連結しないことが望ましい)。このアプリケーションの目的は、式ツリー ビルダーへの GUI と、それによって生成されたツリーの XML シリアル化の 2 つです。
物事をうまく進める方法について、いくつかのガイダンスやヒントをお願いしたいと思います。他の誰かにこれを書いてもらいたくない - これは私のプロジェクトであり、コードを書くのは私です。
だから私の質問は:
実行時に接続文字列のみを使用するだけで、オブジェクト モデルを作成し、DB の要素をセットでアドレス指定できますか? たとえば、すべてのテーブル、ビュー、関数、および sproc のリストなどです。
式ツリーを構築できるように、前述のリストの要素を拡張メソッドで使用できますか?
CSDL、SSDL、および MDL ファイルのみを含む (Entity クラスを含まない) データベースからこれらのリストを取得するために、Metadata Workspace クラスと ItemCollections を使用できますか?
式ツリーの結果をシリアル化するために LINQ to XML を使用できますか? それとも、Entity Framework に固有の他のシリアル化テクノロジを使用する必要がありますか? (ここに示す例のように: http://msdn.microsoft.com/en-us/library/bb738528.aspx )
PS: これまでの私の調査からのいくつかのメモは次のとおりです。 1. たとえば、DataContext.GetTable() メソッド (はい、ジェネリックではなく、弱く型付けされたもの) は、DataContext が接続文字列のみを受け取った場合、データを取得しませんでした。
スキーマ アーティファクトを生成するために EdmGen ツールを呼び出しています。これまでのところ、それらの属性を読みましたが、ラムダ式で使用できる要素のある種のリストを取得しようとしています (テーブルなど)。 ?
私の理解が正しければ、Entity Framework では、Metadata Workspace や ItemCollections などのクラスを EdmGen ツールと共に使用して、概念スキーマをアプリケーションのオブジェクト モデルとして表すために必要なオブジェクトのセットを作成できます。
ここと MSDN の他の関連トピックに沿って Entity Framework プログラミング ガイドを参照しましたが、これまでのところ、このシナリオに関連する情報は見つかりませんでした。昨日、「Programming Entity Framework」という本を手に入れました。答えのいくつかがそこにあることを願っています。手がかりが見つかったら、この質問を更新します。
そのため、混乱しており、まだ検索中ですが、この件について何か助けていただければ幸いです。
敬具、 ボリスラフ