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方法来遍历。