EntityFrameworkを使いつつ、SQLを書くという都合のいいことができないかなぁと夢想しているとサポートされていたので学習録📓
FromSql()とLinqが併用可能
※EFCore7以前ならFromSqlInterpolated()をつかう
FromSql()の例
単純なselect
var blogs = context.Blogs
.FromSql($"SELECT * FROM dbo.Blogs")
.ToList();
Where
var param = "Taro"
var blogs = context.Blogs
.FromSql($"SELECT * FROM dbo.Blogs WHERE USER = {param}")
.ToList();
この書き方でSQLInjection大丈夫なんか、と思いますが自動でSQLParameterに展開してくれるそうです。すごいですね
EFのメソッドと組み合わせ
whereをLinqで指定
var param = "Taro"
var blogs = context.Blogs
.FromSql($"SELECT * FROM dbo.Blogs")
+ .Where(x => x.User == param)
.ToList();
上記の仕組みを使ってSQL内で関数を使い、フィルタ結果をプログラム内にて使用することでパフォーマンス改善に役立てないか目論見中…