2010-04-28 85 views

回答

1

通常我做的是LINQ to Views和LINQ to Stored Procedures。這不是一個什麼是首選的問題,因爲LINQ解決了如何管理數據,一旦查詢SQL存儲過程在SQL端運行的位置,以允許對代碼進行查詢操作(或對我來說,主要是保存)的數據要做到這一點比較慢。

我會說你會想要使用兩者,如果有必要。您是否將要求多個表格的實體保存爲一個實體?如果是這樣,請使用LINQ的存儲過程。如果你使用1到1的實體關係到你的表,那麼就使用LINQ。

0

我會緩存CMS數據庫的結果,因爲您可能會一次又一次地獲取相同的數據請求(緩存數據集,或者使用頁面緩存,或者在使用LINQ時緩存對象)。

然後,如果您使用LINQ或SP,這並不重要,但我只是使用LINQ。

1

存儲過程可以用於Linq2Sql(和實體框架),所以它不是一個或另一個的選擇。

0

對於簡單的CRUD表(沒有加入!)操作的LINQ to SQL是好的,但是,對於任何事情更復雜(需要連接)我總是使用存儲過程(你可以,如果你想使用LINQ到存儲過程)

在這個網站和其他網站上有很多關於此的爭論。對我而言,通常你可以將臨Linq陣營分成最近進入編程階段並且還沒有使用存儲過程的歷史,即沒有大量參與以前項目的數據庫方面。

形成我使用純LINQ,存儲過程以及這兩者混合使用的幾個項目的經驗是我堅持使用Linq獲得基本CRUD和存儲過程的兩個理由,因爲它更復雜或依賴於性能。

1 - 部署/安全 - 任何在現實世界中工作過的人都知道,將數據庫邏輯分成存儲過程並且不納入源代碼和發佈DLL是一個巨大的優勢。您可以使用角色和SQL服務器安全性爲每個查詢添加適當的安全性/訪問層,這對任何嚴重的企業級公司都是必不可少的,您還可以更改任何存儲過程的SQL,而無需執行主版本的新發布應用程序(dll)。我不在乎你聲稱自己有多好,因爲我們都必須使用存儲過程來解決實時問題和性能瓶頸,並且必須在新的應用程序版本中這樣做纔會是一場噩夢。

2 - 性能/代碼嗅覺 - 我看到如此多的應用程序散佈着大量嚴重寫入和低效率的Linq。開發人員對Linq,一些隱藏的懶惰的Linq到SQL查詢很懶惰,這會導致你在企業級系統上嘗試調試性能問題的噩夢 - 「儘快完成它」的座右銘似乎盛行。自從Linq出現以來,我已經看到了更多的意大利麪條代碼,而不是我從COM以前發佈的任何以前的類庫/模式所見過的代碼。