4

ObjectQuery の ToTraceString() を使用して EF (4.3) にいくつかのカスタム拡張機能を構築し、LINQ コードから生の SQL を生成しようとしています。

SQL の列の名前がクエリの要素型のプロパティ名と一致する場合もあれば、C1、C2 などの名前が付けられている場合もあることに気付きました。これにより、何もすることが非常に困難になります。生成された SQL で。これらの列名をプロパティ名にマップする方法を知っている人はいますか (匿名型などのフラットなタプルに対してこれを実行できることだけが気になります。階層的なものは必要ありません)。

プライベート/内部リフレクションに依存するソリューションは完全に受け入れられます。今後の EF リリースで調整が必要になる可能性があることを理解しています。また、役立つ場合は、MS SqlServer (2008+) のみを使用しています。

4

1 に答える 1

2

同様の質問をして回答しました (DataTable の内容はすべて無視できますが、マッピングがどのように使用されているかを示すという点で役立つ場合があります)。

Entity Framework - DataTable への IQueryable

オブジェクト プロパティの位置と SQL ステートメントの列の位置の間のマッピングを取得する方法を示す元の投稿は、次の場所にあります。

Entity Framework はクエリ結果の匿名型へのマッピングをどのように管理しますか?

注: 2 番目のリンクは、オブジェクト プロパティと SQL ステートメント列の間の位置(整数値として) のマッピングのみを提供します。リフレクションを使用して実際のオブジェクト プロパティ名を取得し、何らかの操作を行う必要があります。 SQL ステートメントの文字列分析により、SQL ステートメントの列名を取得します (これには正規表現を使用できますが、やり過ぎかもしれません)。

于 2012-08-23T16:39:49.473 に答える