Websharp使用說明(2)
2024-07-21 02:17:17
供稿:網友
 
數據實體的表示
websharp在數據的表現上,能夠采用兩種方式。
第一種方式,充分利用了.net framework類庫中dataset的功能,設計了一個entitydata類。這個類繼承了dataset,并增加了一些屬性和方法。同數據庫的映射關系,采用xml配置文件的方式。xml配置文件可以通過我們提供的工具來生成。
在實際的應用中,要獲取一個product實體對象,可以通過如下方式取得:
entitydata product=entityprotypemanager. getemptyentity(“product”);
然后,可以通過如下方式來訪問這個對象的屬性:
string productid=customer[“productid”]
可以看到,這種方式同純粹的面向對象的方式有點不同。在這種方式下,數據的表現形式只有一個,那就是entitydata。其好處是明顯的,不用為每個實體都單獨編寫一個類,能夠大大減少代碼的編寫量。其缺點也很明顯,那就是不能利用編譯器類型檢測的功能,如果在調用對象的屬性的時候,寫錯了屬性的名稱,就可能出錯,但是,這個問題可以通過工具來解決。這種方式,比較符合原來使用ado編程人員的習慣。
 
第二種方式,我們可以編寫一個product類,然后,按照標準的oo的方法來使用這個類。只不過,在編寫product類的時候,必須實現persistencecapable接口,并且,同時可以使用到entitydata類的強大功能。
persistencecapable類的定義見 附1:websharp主要接口定義——persistencecapable
 
一個按照這個標準實現的product類的示例如下:
public class product : persistencecapable
 {
 private entitydata product;
 public product() : this(true)
 {}
 
 public product(bool autoinit)
 {
 product=entityprototypemanager.getemptyentity("product");
 if(autoinit)
 product.newrecord();
 }
 public string productid
 {
 get{return product.getstring("productid");}
 set{product["productid"]=value;}
 }
 
 public string name
 {
 get{return product.getstring("name");}
 set{product["name"]=value;}
 }
 
 public string unitname
 {
 get{return product.getstring("unitname");}
 set{product["unitname"]=value;}
 }
 
 public string description
 {
 get{return product.getstring("description");}
 set{product["description"]=value;}
 }
 
 public decimal price
 {
 get{return product.getdecimal("price");}
 set{product["price"]=value;}
 }
 
 public decimal currentcount
 {
 get{return product.getdecimal("currentcount");}
 set{product["currentcount"]=value;}
 }
 
 public int objectcount
 {
 get
 {
 return product.entitycount;
 }
 }
 
 public entitydata entitydata
 {
 get
 {
 return product;
 }
 set
 {
 product=value;
 }
 }
 
 public bool next()
 {
 return product.next();
 }
 
 public void first()
 {
 product.first();
 }
 public void addnew()
 {
 product.newrecord();
 }
 }
 
 
可以看出,采用這種方式,product類既可以代表一個單個的product對象,也可以包含一個product對象集合,并且可以通過next和first方法來遍歷。