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方法來遍歷。