Entity FrameworkでSQLファイルをサポートする案
PostSharpにこだわらずにEntity Frameworkで動的なSQLを扱いやすくするというのもありかもしれません。
たとえば拡張メソッドを使ってObjectContextにメソッドを追加して、SQLファイルのパスやパラメータ(匿名型などで)を渡せるようにしたり。
int max = ...; int min = ...; using (var db = new MyObjectContext()) { db.ExecuteSelect<Employee>("selectBySalary.sql", new {max, min}); }
Daoパターンを使ってObjectContextを直接扱わせないようにしたり呼び出しの前後で処理をはさんだりすることも考えられます。
public class EmployeeDao : AbstrctDao<MyObjectContext> { public IEnumerable<Employee> SelectBySalary(int max, int min) { return ExecuteSelect<Employee>("selectBySalary.sql", new {max, min}); } }
SQLファイルの名前は、StackFrameから取得したメソッド名を使ってフレームワーク側で解決してもいいかも。
public class EmployeeDao : AbstrctDao<MyObjectContext> { public IEnumerable<Employee> SelectBySalary(int max, int min) { return ExecuteSelect<Employee>(new {max, min}); } }