Dot-Net

Linq to Sql、Linq、Typed Datasets、ADO.NET 之間的區別

  • August 17, 2012

我一直在想這個問題。現在好像有很多方法我不知道什麼時候用什麼?或者,如果有學習它們的意義。就像我不知道他們是否基本上做所有相同的事情,並且基本上堅持一個直到你掌握它然後也許看看其他的。

因此,當我參加作為我程序一部分的 ASP.NET 課程時。

我們首先確實喜歡 ADO.NET,我們只是在程式碼中使用 SQL 語句編寫所有內容。然後我們轉向 3 層架構。這是通過製作類似的類並擁有返回內容的數據集來完成的。

SQL 是在課堂上編寫的。我個人從來沒有真正喜歡過這種方式,因為我總是覺得試圖正確引用引號很煩人,而且總體上不喜歡它。

然後我在 Asp.net 網站上找到了我非常喜歡的 3 層拱門教程。他們使用類型化的數據集。您將數據集文件添加到 DAL 文件夾中,然後您將通過 GUI 製作表格適配器和東西。然後,您將在這些 GUI 中編寫程式碼,我發現它是完美的解決方案,因為現在我的 SQL 程式碼遠離我的程式碼,我不必擔心引號和所有這些東西不正確或關閉連接和東西加上它甚至還有一個 SQL GUI 建構器!

然後我會在 BLL 文件夾中創建文件並創建一個屬性來獲取表適配器並編寫我的業務層邏輯。

我唯一不喜歡的是,如果我的東西試圖返回一些新行,它會被輸入,它會發瘋。

所以當我不得不加入表格時,我通常不得不製作一個新的表格適配器。

現在好像有很多。

  • Linq -> 有人說會取代 ADO.NET,有人說不會。
  • LINQ轉SQL
  • ado.net

我不確定這是否全部都可能不是。

在寫這篇文章之前,我快速檢查了一下 linq to sql 是關於什麼的,並看到一些文章說 MS 正在扼殺牠。他們從 2008 年開始,所以我不知道這是否屬實,但我注意到幾乎所有 MVC 書籍都使用 linq to sql,所以我認為不是。

那麼,是否值得切換到其他類型的數據集?還是分別用於不同的情況?

LINQ 本身只是一種融入 C# 3.0 的基礎技術(“語言集成查詢”)——它本身與數據庫**無關。**LINQ 可用於各種事物——數據庫、XML、記憶體中的對象、Entity Framework 實體、Active Directory——你可以命名它。

Linq-To-SQL 是輕量級、直接的、僅限 MS-SQLServer 的技術,它允許您在 .NET 應用程序中將 SQL Server 表作為真實對象輕鬆、良好地使用。它是一個“對象關係映射器”,可以更輕鬆地處理數據庫。它只是 SQL Server,Microsoft 不會進一步擴展它 - 它在 .NET 4.0 中也可用,但不會再進一步開發。

ADO.NET 是 .NET 中的基礎數據訪問技術 - 它使您可以訪問各種數據儲存,包括關係和非關係。這是非常基礎的技術——您以非常低級的原始方式處理數據。

最重要的是,您擁有 ADO.NET 數據集,它們有點像 Linq-to-SQL,因為它們使處理數據庫變得更加容易。與 Linq-to-SQL 不同,您不是在 .NET 程式碼中處理來自域模型的對象,而是在處理面向數據庫的行和列,就像它們存在於數據庫中一樣。它更直接地表示數據庫中的內容,位於較低級別,與您的數據庫佈局緊密耦合,並且不像 Linq-To-SQL 對像那樣“好”且易於使用 - 您處理低級行和列及其值。

如果您現在有選擇,並且除了 SQL Server 之外不需要任何東西,我強烈建議您查看 Linq-to-SQL - 從原始數據庫表到漂亮且易於使用的 .NET 對象的映射真的讓您的生活更美好輕鬆多了!

馬克

引用自:https://stackoverflow.com/questions/1081916