程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET 2.0 ObjectDataSource控件

ASP.NET 2.0 ObjectDataSource控件

編輯:關於ASP.NET

ObjectDataSource控件與SqlDataSource控件的對象模型是類似的。ObjectDataSource沒有ConnectionString屬性,它暴露了TypeName屬性,用於指定需要實例化的執行數據操作的對象類型(類名)。ObjectDataSource控件與SqlDataSource的命令屬性相似,也支持SelectMethod、UpdateMethod、InsertMethod和DeleteMethod等屬性,用於指明執行這些數據操作的關聯類型的方法。本文將解釋建立數據訪問層和業務邏輯層組件,並通過ObjectDataSource對象展示ASP.NET 2.0數據組件的技術。

綁定到數據訪問層

數據訪問層組件封裝了那些使用SQL命令查詢和修改數據庫的ADO.NET代碼。在典型情況下,它抽象了建立ADO.NET連接和命令的細節信息,暴露了可以通過適當參數調用的方法。典型的數據訪問層組件可能暴露了下面一些方法:

public class MyDataLayer {
 public DataView GetRecords();
 public DataView GetRecordsByCategory(String categoryName);
 public DataView GetRecordByID(int recordID);

 public int UpdateRecord(int recordID, String recordData);
 public int DeleteRecord(int recordID);
 public int InsertRecord(int recordID, String recordData);
}

ObjectDataSource可以使用下面的方式來關聯到這個類型:

<asp:ObjectDataSource TypeName="MyDataLayer" SelectMethod="GetRecords" UpdateMethod="UpdateRecord"
DeleteMethod="DeleteRecord" InsertMethod="InsertRecord" runat="server"/>

ObjectDataSource要求對象有非常特殊的設計模式。這些約束都是Web應用程序請求所處的無狀態的(stateless)環境引起的。由於在典型情況下,對象的建立和銷毀都是為了服務於一個請求,因此通過對象數據源綁定的對象也是無狀態的。在默認情況下,ObjectDataSource采用TypeName屬性指定的類型的默認的構造函數(不帶參數),盡管通過處理ObjectCreating事件來建立一個自定義對象實例,並把它指定給事件參數的ObjectInstance屬性,從而實現實例化也是可行的。與SelectMethod屬性關聯的對象方法可以返回任何對象、Ienumerable列表、集合或數組。在上面的數據訪問層示例中,DataView對象實現了IEnumerable接口。我們在下一部分將討論到,這些方法也可以返回強化類型的集合或對象。

GetProducts() -> ProductCollection
GetProductsDataSet() -> DataSet
GetProduct (int productId) -> Product

Update、Insert和Delete一般把單獨的數據項字段作為參數,也可以把帶有數據項字段公共屬性的集合類對象作為參數。

UpdateProduct (int id, String name, double price, bool inStock)
UpdateProduct (Product p) // p.ID, p.Name, p.Price, p.InStock
DeleteProduct (int id)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved