LINQ to SQL 讓開發者以強型別物件操作資料庫,編譯期檢查 SQL 語法,降低資料庫門檻。但並非銀彈,需權衡利弊。
ExecuteCommand 可執行批次 UPDATE/DELETE,避開 SubmitChanges 逐筆更新的效能罰點。傳統字串拼接 "ORDER BY " + colName 在 LINQ 難以直接對應,因 OrderBy 需 Lambda 運算式。常見替代方案:
OrderBy(c => c.Col)。System.Linq.Dynamic):支援字串式 OrderBy("CompanyName"),內部動態建構 Expression Tree,但含 80KB Dynamic.cs,非內建功能。db.ExecuteQuery<Product>("SELECT ... ORDER BY " + colName) 仍回傳強型別集合。DataGrid/DataView 時,DataTable/DataSet 更快。ExecuteCommand,避免 SubmitChanges 逐筆往返。技術無絕對優劣,視專案對開發速度與執行效能的權重、團隊熟悉度而定。善用 LINQ to SQL 的強型別與編譯期檢查優勢,於動態查詢或高效能批次處理時靈活切換 ExecuteQuery/ExecuteCommand 或 Dynamic LINQ,方為正道。