我目前在爲我的項目使用LINQ to SQL時遇到了問題。這是因爲大部分冗長的SQL查詢(或,而不是)被硬編碼到C#中,而我們一直在做的事情是使用context.Database.SqlQuery<ClassName>(sql, sqlParams)
。對LINQ使用文本SQL
它一般非常有效,但現在我們需要更多動態的東西。我們需要插入諸如.Where(x => x.Name.Contains("Anonymous")).Take(20)
之類的東西或其他東西。然而,直接插入到代碼前面提到的行會導致如下:
context.Database.SqlQuery<ClassName>(sql, sqlParams).Where(x => x.Name.Contains("Anonymous")).Take(20);
雖然它的實際工作,並拉前20條記錄,其中名稱中包含「無名氏」,表現非常糟糕。它在幕後執行的是從該表中獲取所有記錄,然後在將它們加載到內存之後進行過濾。
我想問一下,有什麼方法可以將文本SQL轉換爲LINQ,或將LINQ轉換爲SQL,這樣我就可以在一個語句中執行我的文本SQL和LINQ。如果你實際上沒有解決方案,我會很高興地感謝你的建議......!
編輯:我已經考慮過使用表達式樹,但我不知道他們如何能真正適合圖片。另外,我考慮過使用數據庫視圖。但是有太多的視圖(每個表格有很多數目),將所有內容移植到MS SQL並重寫所有查詢邏輯肯定是一件麻煩事。
爲什麼在LINQ中使用'SqlQuery'而不是在DataContext中使用表? –
任何SQL-to-LINQ或LINQ-to-SQL轉換都可能會由於兩者的架構差異而變得不可靠。我建議在LINQ中完全重寫查詢並避免普通的SQL。 –
所以你想合併一個過時的技術與其他過時的技術。也許是時候做一些不同的事情了。 –