簡體   English   中英

數據訪問層新手

[英]Data Access Layer newbie

.NET 數據應用程序的新手,來自 Visual Foxpro 背景。

我也計划在我們的 LAN 上使用 ASP.NET 和/或 Silverlight UI,也許還有一些 WPF 客戶端的東西,所以我想制作一個可以支持所有這些的數據訪問層。

我的數據將在 SQL 服務器中。 我已經進行了從 Foxpro 推送數據到 SQL Server 2005 的測試運行。它很順利。 這給了我一個 SQL 服務器數據存儲來玩。

現在,這里是我到目前為止玩過的數據工具,試圖熟悉 .NET 數據訪問:

  1. 我玩過 Linq-To-Sql,並使用 L2S 中的類型化對象和 collections 制作了一個測試表單,然后填充了一些 WPF 列表視圖和其他 UI 控件。 那很酷。 Linq 很酷。 WPF 很酷:請在此處查看表格截圖: http://twitpic.com/26w26/full

  2. 我玩過我猜你會稱之為經典 ADO.Net 數據集的東西。 伙計,數據集似乎需要做很多工作...... SQLConncetion 一個 SQLCommand 一個 DataSet 一個 TableAdapter

...最糟糕的是,我不得不在引號內輸入 SQL 代碼,而 IDE 絕對沒有幫助,以防止我輸入錯誤,或者寫完全錯誤的 Z9778840A0100CB30C5B30C98287674B我的數據表每次。 有很多錯誤空間和查詢參數。 呸。

那么,讓我問一下.... .NET 開發者社區真的使用 SQLCmds、DataSets 和 DataTables 來讀寫數據嗎? 它是這樣工作的嗎?

我知道所有關於 O/RM 之爭的事情,還有 EF。

看起來您可以將任何 UI 控件從 ASP.NET/Silverlight/WPF/和 WinForms 連接到 Object collections(通過 OR/M)或 DataSets/DataTables,對吧? 它總是在這兩者之一之間進行選擇嗎?

所以,現在是我做決定的時候了,但是,我不知道如何選擇。 它們似乎都可以工作,但是那個該死的 DataSet 東西對我來說似乎很可怕,但是,不知何故,它似乎也很常用。

首先,將數據獲取到 SilverLight 的唯一方法是通過 WCF web 服務。 Silverlight 中不允許直接訪問數據庫(畢竟您是在瀏覽器中運行)

第二:(我會對此表示反對)數據集是邪惡的。 直接生成惡魔。 不惜一切代價避免,除非有人拿着槍指着你的頭。 問題之一是性能:沒有。 問題二是數據消耗:1k自動變成3k。 對於桌面應用程序來說不是什么大問題,但對於 web 應用程序來說卻是個大問題。

第三:了解創建域 object 的含義。 從那里您可以使用 EF 或 NHibernate。 我更喜歡 NHibernate,但有一個學習曲線。 一旦你有一個好的域 object,你就可以將它傳遞給你列出的任何客戶端。

經典的老ADO.NET我用了很多年了,習慣就好了。 對於更大的應用程序,您可以花一些時間創建一次數據層,然后將其與許多其他業務對象一起使用。

其他幾個選項:

  1. 強類型數據集。 您可以創建一個強類型數據集,該數據集允許您拖放數據庫對象並為您生成大量管道代碼。

2 linq 到 Sql 設計器,它還允許您將對象拖放到設計器中,並生成用於連接和操作數據的 dbml 文件。

我最近加入了 Linq 潮流,當將數據視為對象時,它確實簡化了您的生活。

祝你好運!

ADO.NET “Classic”(DataSet/DataTable API)沒有任何問題,至少有一次,我決定使用它而不是 ORM。 話雖如此,ADO.NET“經典”更常用的事實在很大程度上是歷史的產物。 長期以來,這是唯一可行的選擇,尤其是如果您想堅持使用僅限 Microsoft 的解決方案。

使用數據集的人實際上使用 IDE 來創建強類型數據集。

使用它,您將擁有一個類似於 SQL Management Studio 的查詢構建器的可視化查詢構建器。 這會生成 function 以加載/保存等,並帶有參數。

隨處可見數據集的事實很大程度上是因為它是迄今為止唯一可用的解決方案,沒有隨處可見的手動編碼 SQL。

如今,ORM 風靡一時,它們確實提供了一個非常好的抽象層。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM