同等の LINQ クエリを配置する場所に sql を配置するか、 DataContext.ExecuteQuery の sql を配置します。それがどこにあるかについては...まあ、それはあなた次第であり、どれだけ離れたいかによって異なります.
Query<T>
ただし、個人的には、呼び出しから離れた別のクラスに SQL を隠す利点はないと思います。データ (および実際にはパラメーター) を簡単に検証できるように、それらをコンテキストで表示する必要があります。また、その場で (まだパラメーター化された) クエリを作成している場合もあります。しかし、通常の静的クエリの場合、抽象化する必要がある正当な理由がない限り、TSQL をコードの近くのリテラルとして保持します。
var reports = conn.Query<Report>(@"
select x.blah, y.blah
from x (snip)
where x.ParentId = @parentId and y.Region = @region", new {parentId, region});
(上記の代替拡張メソッドの使用法にも注意してください)
IMO、上記の重要な点は、他の場所からそのクエリを再利用する可能性は非常に低いということです-代わりにロジックがメソッドに入れられ、そのメソッドが複数の場所から呼び出されます。したがって、クエリを中央のラッパーの背後に隠すために使用できる他の唯一の理由は、(異なる SQL ダイアレクトを使用して) 異なるデータベース プロバイダーをサポートする必要がある場合です。そして、それは人々が理解するよりもまれです。