Asp.net 2.0的一些小心得 (二) ObjectDataSource的使用

來源:互聯網
上載者:User

小蟲個人認為,microsoft在asp.net裡面所有增加的功能中,ObjectDataSource的確是一個最讓我眼睛一亮的東西,再不象以前的的DataSource控制項給人的雞肋之感,而給我們在三層架構的資料庫開發過程中帶來了耳目一新的感覺。
要用好ObjectDataSource,首先我們要認同Microsoft在三層結構的開發模式中的可視化理念。小蟲認為ObjectDataSource是Microsoft提供給大家廣泛採用的三層資料架構與MS一直提倡的可視化編程的一座橋樑,而就目前小蟲的個人使用方式來看,這座橋樑基本滿足了MS現在推出的各種資料庫控制項的資料提供服務(比如GradView, DataList, DetailsView, FormView 等),ObjectDataSource直接在頁面上提供了商務邏輯層與使用者介面層之間的資料交換。
下面小蟲就前段時間做的一個小東西,具體的說明一下:
首先,我們談三層結構,在商務邏輯層與使用者介面層之間,在之前的Asp.net 1.1中,使用者介面層必須採用第三方控制項或者直接讀寫商務邏輯層的資料,而無法進行控制項的資料繫結,使用者必須手工填寫好給商務邏輯層中的介面所需要的各種資料,並按照所使用的頁面控制項的格式編寫程式逐一把從商務邏輯層中得到資料呈現出來。這樣的開發模式在我們以往在asp.net的開發中,認為是理所當然的,既然要使用三層架構,就必須在開發效率上做出犧牲,然而,現在MS伴隨著ObjectDataSource的推出,大聲的對這種概念說:NO!
那麼,我們看看現在的三層架構中引入了ObjectDataSource後新的開發流程是什麼呢?首先,在資料庫服務層中,我們不需要做任何變化,繼續沿用大家認為記過長時間最佳化而得來的資料庫介面,如果您喜歡用DataSet,那麼,繼續;如果喜歡使用SqlDataAdapter的,也請繼續。不需要任何的改變,同樣,在商務邏輯層中,大家儘管按照以為的習慣去書寫,也同樣不需要改變什麼,比如讀資料的時候,無論你返回的是DataSet,還是你自己定義的一個Array,List,都可以,而帶來天翻地覆的變化的,是在使用者介面層,小蟲經常是做到了在使用者介面層的無代碼編程(C#或者Basic.Net代碼),那麼,這是如何做到的呢?
這裡,小蟲用一個簡單的例子來加以說明:
我們假設有一個書店的後台管理程式中,必須實現一個書的類別的增加、刪除、更改、和查詢。對於資料庫層來說,無非是寫好這四個預存程序:Insert, Update , Delete , Select,和調用他們的方式,而在商務邏輯層中,您首先需要定義一個類,比如Class BookClass, 然後分別需要根據四個預存程序分別寫出以下四個函數:
Class BookClass
{
Public static int Insert(…);      // 增加一個書的類別,成功返回這本書的ID
Public static bool Update(…);      //修改一個書的類別,成功返回true,失敗返回flash
Public static bool Delete();      //刪除一個書的類別,成功返回true,失敗返回flash
Public static DataSet Select();            //查詢指定條件下書的類別資訊,成功返回一個DataSet,失敗發揮Null.
}
這裡有個注意的地方,那就是你函數中的參數名必須和資料庫中表的欄位名或者預存程序的參數名保持一致,而如果是主鍵,那麼參數名必須為:original_<欄位名>。
寫完了上面的商務邏輯層中關於書的類別的代碼,那麼,下面就是如何調用的問題了,在傳統的Asp.net 1.1的開發過程中,如果你想增加一個書的類別,那麼必須手工填寫好Insert(…)函數裡面的參數,然後根據傳回值來進行處理,那麼現在呢?
小蟲偷懶的辦法來了,呵呵:
小蟲在頁面上拖一個FormView,在Wizard中的Chose data srouce中選擇new data srouce, 然後選擇database,,設定ID為ObjData(記著,是DataaSource 不是Object,先別問為什麼),然後,按照提示一步步的把你正常做sqldatasource的習慣定義好需要的欄位,最後IDE會自動的把你所需要的格式產生FormView的template design。然後,呵呵,delete掉剛才自動加的哪個SqlDataSource控制項(也別問我為什麼),再然後,拖一個ObjectDataSource過來,把ObjectDataSource的ID改成你剛才刪除掉的SqlDataSource控制項的ID:ObjData,再把選擇ObjData的設定嚮導,選擇Configure Data Srouce,把它設定為BookClass,然後分別給Select, Insert, delete , update設定你在Class BookClass中定義的函數,然後,別的也不需要,直接finish,就可以了。如果是Select查詢,而又與參數,那麼根據相應的條目設定就可以了。再然後,按“F5”運行啊,哈哈,至於頁面配置、美化,那關我什麼事,那是美工的活,我可不能越俎代庖啊。
      恭喜,你的這一段程式完成了,哈哈,無代碼編程。因為時間的關係,小蟲再整理出一段小代碼放上來給大家參考。
      隨便說一下,你當然可以直接用ObjectDataSource來進行設定,每個相應的欄位分別bind你所需要的控制項,只是要注意,如果是某個資料表中的主鍵,那麼最好加在FormView或者GradView等的DatKey中,同樣,在函數中的變數就必須是original_<欄位名>。

一個在Mircosoft大樹上蛀了幾個小洞的蟲子
聯絡Mail: 代碼蟲
小蟲目前做的首頁: http://www.gofordesign.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.