首页 > 开发 > 综合 > 正文

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方法来遍历。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表