2011-01-08 100 views
2

爲什麼我們需要C#中的LINQ,如果我們可以使用ADO.net做任何事情。那麼LINQ查詢的需求是什麼? 它們是否比ADO.net更優化?哪一個最適合使用?C#中的LINQ查詢#

+0

LINQ的不是特定的C#。 VB.NET也與它很好地搭配。 – Oded 2011-01-08 12:17:11

+0

如果您正在討論語言功能或提供者(Linq 2 SQL,Linq 2 XML等),您能澄清一下嗎? – Oded 2011-01-08 12:24:44

回答

1

Linq to Sql(我認爲是你所指的),是有用的,因爲它提供了一個方便的抽象。

編寫linq查詢要比編寫sql更簡單,然後手動水化對象。

0

數據表爲您提供的高速緩存 可以不用DB 往返重新枚舉,而LINQ to SQL的結果 需要與 有點像ToList明確緩存()/ ToArray的()。 將DataContext中的標識緩存放在一邊, L2S代碼更接近於枚舉 DataReader。雖然DataReader確實不允許你重新枚舉,並且 需要另一個ExecuteReader, 重新編號的L2S查詢的影響是 相同 - 另一個往返數據庫。

http://blogs.msdn.com/b/wriju/archive/2008/07/14/linq-to-sql-vs-ado-net-a-comparison.aspx

LINQ to SQL vs ADO.Net

2

我們不能告訴你爲什麼需要LINQ。這是給你決定的。 LINQ和你認爲的LINQ也有區別。 LINQ並不僅僅意味着查詢SQL。 LINQ內置於編譯器中,用於將查詢語句翻譯爲方法調用,並且有許多提供者可用於LINQ,Linq-to-Sql就是其中之一(我相信這就是你所指的),實體框架就是另一種是Linq-to-Objects是Linq-to-Xml等。Linq-to-Sql(和EF)是用於將數據庫對象從數據庫域映射到應用程序域的ORM框架。 ORM框架可以大大縮短開發時間,同時提供自動數據加載,屬性映射,關係感知模型等

你可以做到這一切與香草ADO.NET太多,但你必須推出自己的。我的問題是,當您考慮a)現有代碼庫,b)開發期限,c)可維護性時,在您的項目中使用ORM框架是否可行?

3

我個人認爲Linq最大的優勢在於它優化了開發者。它的優點在於使用相同的查詢語言擴展來釋放各種數據源的開發人員查詢。

你能回答多少類在System.Web命名空間或有多少客戶在我們的數據庫是在渥太華使用幾乎相同的語法。

當然,這是有代價的,但並不是說優化的含義是什麼?

1
  • 組合性:允許您撰寫動態使用不同的代碼路徑查詢,而無需訴諸複雜和脆弱的SQL字符串連接
  • 類型安全:到SQL或實體框架由LINQ生成的類是強類型,所以類型檢查在編譯時被強制執行。
  • 住在面向對象的世界:你在面向對象的語言程序,爲什麼在一個面向對象的方式不能訪問數據?導航性能讓你得到一個客戶的所有訂單,而無需編寫一個查詢:cust1.Orders
  • 可讀性: LINQ,使用查詢理解或擴展方法的語法,是更可讀然後嵌入一個不匹配的DSL諸如SQL到現有的.NET代碼。
  • 快速應用開發(RAD):隨着L2S/EF和LINQ,你可以旗開得勝。您可以立即啓動並運行與數據庫連接的應用程序。
  • 抽象:使用一個單一的工具,LINQ,您可以訪問不同類型的數據,甚至還可以創建跨多個域的查詢:各種數據庫,對象,XML,34 more...
  • 數據庫生成:,如果你想O/R映射器只將數據庫映射到對象,你認爲是錯誤的 - 它也可以用另一種方式工作。 EF可以根據您創建的類自動創建數據庫。這可能是一個相當好的起點,或者甚至足夠適用於小型系統。