Websharp使用说明(2)

** 数据实体的表示 **

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

Published At
Categories with Web编程
Tagged with
comments powered by Disqus