問一下C#的前輩們
asp.net( C#)中有無類似這篇有動態組合出SQL的套件??
[筆記,PHP,MySQL]常用方法封裝
我想要一個套件可以協助我快速組合出SQL,
要能事先處理掉sql injection問題,
where如果能夠有or更好,沒有就算了
類似像(如果要考慮or完全沒到怎麼呈現會比較好)
db.Table("myTable")
.Where("field1",DateTime.Now, "<")
.Where("field2","a%", "Like")
.Select(new string{"field1","field2"})
.Make()
=> select field1,field2 from myTable where field1 < '2020/...' and field2 field2 Like 'a%'
印象中以前網路上有很多,現在怎麼一篇都找不到...
(google關鍵字 c# 動態組合sql 封裝 class helper 1=1 .....)
原本想說找不到自己寫一個
但在條件AND/OR群組 與 參數in/like 與 遇上nvarchar的還要在參數前面補N( name=N@name 為了多國語言) 的組合再設計上沒有靈感,
不知道有無範例可以參考或是有什麼推薦的套件?
Linq很好用,但花式select出來的匿名物件無法傳遞...
(可以轉成Object在傳遞,但後續操作更麻煩)
除非只為了這一次就新增一個class...
另外聽說Linq to SQL效能很差
所以遇到花式select暫時不考慮Linq
也有Linq to entities可用哦
動態組成Linq的話
https://archive.codeplex.com/?p=nlinq
範例
query = new NLinqQuery(
@" from m in methods
where !m.IsStatic
orderby m.Name
group m by m.Name into g
select new { MethodName = g.Key, Overloads = g.Count() }");
可以試試 SqlBuilder
https://github.com/ronnieoverby/UniqueNamespace.SqlBuilder
AND/OR
的用法
https://github.com/ronnieoverby/UniqueNamespace.SqlBuilder/blob/master/src/Tests/PredicateTests.cs
不過後來覺得測試有點麻煩,還是比較喜歡 Dapper 的寫法。