ObjectDataSource介紹 - 什麼是ObjectDataSource
前陣子Visual Studio 11 Developer Preview已經正式出來跟大家見面了,當然其中
.NET Framework 4.5( 暫且如此稱之 )也跟著一併出來,對於寫ASP.NET的我來說,當
然先觀注有關ASP.NET的部份,其中Strongly Typed Data Controls及Model Binding
特別引起我的興趣,詳細內容可以參考scottgu’s Blog ASP.NET vNext Series
一系列的文章
那跟本文的主題ObjectDataSource有什麼關係呢?因為在Model Binding裡,基本
上可以把它當成是ObjectDataSource強型別的作法,在這裡頭你看不到程式裡面有什
麼SQL Command等資料庫的操作語法,因此我們有必要來了解一下什麼是ObjectDataSource
我們在過去的開發上最常看到的Data Bind的做法,大致是以SqlDataSource + DataTable
、DataSet之類的方式直接在程式中就操作SQL Command來取得資料,或是直接以SQL
Command的方式就對資料來進行處理
private void DataLoad()
{
using (SqlConnection conn = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DBconnStr"].ToString()))
{
conn.Open();
using (SqlCommand command = new SqlCommand())
{
command.Connection = conn;
command.CommandText = "select top 10 id,code,name from basecode";
IDataReader idr = command.ExecuteReader();
this.GridView1.DataSource = idr;
this.GridView1.DataBind();
this.GridView1.Columns[0].Visible = false;
}
conn.Close();
}
}
舉例來說:當想要查詢某一筆訂單資料,這樣的方式不像是把『訂單』看待成是一個物件
,而是單純視為一筆Data
這樣的方式,幾乎是把所有的東西集於一身,開發的人員除了必須了解實際資料庫中Table
間的關係之外,也必須了解商業Logic,在ASP.NET裡其實提供了ObjectDataSource,藉由
ObjectDataSource的慨念讓我們可以透過自己設計好的物件撰寫有關資料處理方面的動作,
以訂單的例子來看,ObjectDataSource的慨念大致如下圖所示
藉由訂單的Class,我們將可以自行定義撰寫相關的Method,把關於實際資料庫中Table
間的關係封裝在裡頭,外界不需要去知道訂單資料是如何讀取/寫進資料庫,只要利用該
Class所提供的相關Method來進行作業即可,這樣一來這個Class便可以輕易的移植到任
何相關的程式裡,以後若資料庫架構有改變,我們也只需要針對這個Class進行調整即可
此外有了『訂單』的Class,即使不透過ObjectDataSource來綁操作,我們仍可以借由
『訂單』Class所提供的Method,自行於背後端來操作『訂單』物件
有關如何撰寫『訂單』的Class,後續將會利用幾篇文章分別來介紹
By No.18