つまり、データベースビューを使用せずに、エンティティモデルでリテラルSQLサブクエリを使用できますか?
コンテキスト:C#オブジェクトを生成するADO.NETクエリがたくさんあります。これらのオブジェクトは、クエリの形状に直接対応しています。つまりObjectContext.Translate
、からそれらを抽出するために行うことができますSqlDataReader
。これらのクエリはたくさんあり、その多くは非常に複雑で、エンティティフレームワークがサポートしていない機能(whileループ、CTE、階層IDなど)を使用するものもあります。これらの(レガシー)クエリをLINQに変換することはできません。
ただし、これらの結果をラップして、C#側にカスタムフィルタリングを追加できるようにしたいと思います。並べ替え、フィルタリング、ページングなどです。すべてのクエリをビュー(またはストアドプロシージャ)に変換できます。これらをマップしますが、それは面倒でメンテナンスの悪夢です。しかし、原則として、EFはそのルートで「不透明な」SQLクエリで使用できます。
SQLで記述されたサブクエリをエンティティモデルで使用できますか?ではなくObjectContext.Translate
を返すが理想的ですが、必須ではありません。クエリの大部分はコンパイル時定数であるため、何らかの形式の前処理が可能です。IQueryable
IEnumerable
編集:フィルター/並べ替えクライアント側を追加できるように、何かを返すものを探していIQueryable
ますが、それらをDBで実行します(通常どおり)。私はEntityFrameworkのコードファーストを使用しています。