html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

Websharp使用说明_.NET教程_编程技术

[ ] 已经帮助:人解决问题
web


前言 wRyHTML5中文学习网 - HTML5先行者学习网

N层的应用软件系统,由于其众多的优点,已经成为典型的软件系统架构,也已经为广大开发人员所熟知。在一个典型的三层应用软件系统中,应用系统通常被划分成以下三个层次:数据库层、应用服务层和用户界面层。如下图所示:
wRyHTML5中文学习网 - HTML5先行者学习网

其中,应用服务层集中了系统的业务逻辑的处理,因此,可以说是应用软件系统中的核心部分。软件系统的健壮性、灵活性、可重用性、可升级性和可维护性,在很大程度上取决于应用服务层的设计。因此,如何构建一个良好架构的应用服务层,是应用软件开发者需要着重解决的问题。 wRyHTML5中文学习网 - HTML5先行者学习网

为了使应用服务层的设计达到最好的效果,我们通常还需要对应用服务层作进一步的职能分析和层次细分。细分的结果,是能够使我们更加容易构建应用服务层的内容。 wRyHTML5中文学习网 - HTML5先行者学习网

对于应用服务层来说,我们通常需要处理以下几个方面的内容: wRyHTML5中文学习网 - HTML5先行者学习网

Ø 数据的表示方式 wRyHTML5中文学习网 - HTML5先行者学习网

Ø 数据的存取方式 wRyHTML5中文学习网 - HTML5先行者学习网

Ø 业务逻辑的组织方式 wRyHTML5中文学习网 - HTML5先行者学习网

Ø 业务服务的提供方式 wRyHTML5中文学习网 - HTML5先行者学习网

Ø 层的部署和层间交互 wRyHTML5中文学习网 - HTML5先行者学习网

关于这些方面的讨论,可以参见拙文《面向对象的应用服务层设计》,或者在这里也能够看到同样的文章。 wRyHTML5中文学习网 - HTML5先行者学习网

下面,将就这些部分在Websharp中使用进行一些比较详细的说明。wRyHTML5中文学习网 - HTML5先行者学习网

数据实体的表示

Websharp在数据的表现上,能够采用两种方式。 wRyHTML5中文学习网 - HTML5先行者学习网

第一种方式,充分利用了.Net Framework类库中DataSet的功能,设计了一个EntityData类。这个类继承了DataSet,并增加了一些属性和方法。同数据库的映射关系,采用XML配置文件的方式。XML配置文件可以通过我们提供的工具来生成。 wRyHTML5中文学习网 - HTML5先行者学习网

在实际的应用中,要获取一个Product实体对象,可以通过如下方式取得: wRyHTML5中文学习网 - HTML5先行者学习网

EntityData Product=EntityProtypeManager. GetEmptyEntity(“Product”); wRyHTML5中文学习网 - HTML5先行者学习网

然后,可以通过如下方式来访问这个对象的属性: wRyHTML5中文学习网 - HTML5先行者学习网

string ProductID=Customer[“ProductID”] wRyHTML5中文学习网 - HTML5先行者学习网

可以看到,这种方式同纯粹的面向对象的方式有点不同。在这种方式下,数据的表现形式只有一个,那就是EntityData。其好处是明显的,不用为每个实体都单独编写一个类,能够大大减少代码的编写量。其缺点也很明显,那就是不能利用编译器类型检测的功能,如果在调用对象的属性的时候,写错了属性的名称,就可能出错,但是,这个问题可以通过工具来解决。这种方式,比较符合原来使用ADO编程人员的习惯。 wRyHTML5中文学习网 - HTML5先行者学习网

第二种方式,我们可以编写一个Product类,然后,按照标准的OO的方法来使用这个类。只不过,在编写Product类的时候,必须实现PersistenceCapable接口,并且,同时可以使用到EntityData类的强大功能。 wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceCapable类的定义见 附1:Websharp主要接口定义――PersistenceCapable wRyHTML5中文学习网 - HTML5先行者学习网

一个按照这个标准实现的Product类的示例如下: wRyHTML5中文学习网 - HTML5先行者学习网

public class Product : PersistenceCapable wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

private EntityData product; wRyHTML5中文学习网 - HTML5先行者学习网

public Product() : this(true) wRyHTML5中文学习网 - HTML5先行者学习网

{} wRyHTML5中文学习网 - HTML5先行者学习网

public Product(bool AutoInit) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

product=EntityPrototypeManager.GetEmptyEntity("Product"); wRyHTML5中文学习网 - HTML5先行者学习网

if(AutoInit) wRyHTML5中文学习网 - HTML5先行者学习网

product.NewRecord(); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public string ProductID wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return product.GetString("ProductID");} wRyHTML5中文学习网 - HTML5先行者学习网

set{product["ProductID"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public string Name wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return product.GetString("Name");} wRyHTML5中文学习网 - HTML5先行者学习网

set{product["Name"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public string UnitName wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return product.GetString("UnitName");} wRyHTML5中文学习网 - HTML5先行者学习网

set{product["UnitName"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public string Description wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return product.GetString("Description");} wRyHTML5中文学习网 - HTML5先行者学习网

set{product["Description"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public decimal Price wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return product.GetDecimal("Price");} wRyHTML5中文学习网 - HTML5先行者学习网

set{product["Price"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public decimal CurrentCount wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return product.GetDecimal("CurrentCount");} wRyHTML5中文学习网 - HTML5先行者学习网

set{product["CurrentCount"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public int ObjectCount wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

return product.EntityCount; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public EntityData EntityData wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

return product; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

set wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

product=value; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public bool Next() wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

return product.Next(); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public void First() wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

product.First(); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public void AddNew() wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

product.NewRecord(); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

}
wRyHTML5中文学习网 - HTML5先行者学习网

可以看出,采用这种方式,Product类既可以代表一个单个的Product对象,也可以包含一个Product对象集合,并且可以通过Next和First方法来遍历。wRyHTML5中文学习网 - HTML5先行者学习网

如果要表示一对多的对象结构,我们可以采用如下的方式(表明了一个入库单的结构,这个入库单包含了入库单头和相关明细):

public class Form : PersistenceCapable wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

private EntityData form; wRyHTML5中文学习网 - HTML5先行者学习网

private FormDetail formDetail; wRyHTML5中文学习网 - HTML5先行者学习网

#region 构造函数 wRyHTML5中文学习网 - HTML5先行者学习网

public Form() : this(true) wRyHTML5中文学习网 - HTML5先行者学习网

{} wRyHTML5中文学习网 - HTML5先行者学习网

public Form(bool AutoInit) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form=EntityPrototypeManager.GetEmptyEntity("Form"); wRyHTML5中文学习网 - HTML5先行者学习网

if(AutoInit) wRyHTML5中文学习网 - HTML5先行者学习网

form.NewRecord("Form"); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public Form(EntityData entity) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form=entity; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

#endregion wRyHTML5中文学习网 - HTML5先行者学习网

#region 属性 wRyHTML5中文学习网 - HTML5先行者学习网

public string FormID wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return form["FormID","Form"].ToString();} wRyHTML5中文学习网 - HTML5先行者学习网

set{form["FormID","Form"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public DateTime FormTime wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return form.GetDateTime("FormTime","Form");} wRyHTML5中文学习网 - HTML5先行者学习网

set{form["FormTime","Form"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public FormDetail FormDetail wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

if(formDetail==null) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

formDetail=new FormDetail(form); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

return formDetail; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

#endregion wRyHTML5中文学习网 - HTML5先行者学习网

#region PersistenceCapable 成员 wRyHTML5中文学习网 - HTML5先行者学习网

public int ObjectCount wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

return form.EntityCount; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public EntityData EntityData wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

return form; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

set wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form=value; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public bool Next() wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

return form.Next("Form"); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public void First() wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form.First("Form"); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public void AddNew() wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form.NewRecord("Form"); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

#endregion wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public class FormDetail : PersistenceCapable wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

private EntityData form; wRyHTML5中文学习网 - HTML5先行者学习网

#region 构造函数 wRyHTML5中文学习网 - HTML5先行者学习网

public FormDetail() : this(true) wRyHTML5中文学习网 - HTML5先行者学习网

{} wRyHTML5中文学习网 - HTML5先行者学习网

public FormDetail(bool AutoInit) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form=EntityPrototypeManager.GetEmptyEntity("Form"); wRyHTML5中文学习网 - HTML5先行者学习网

if(AutoInit) wRyHTML5中文学习网 - HTML5先行者学习网

form.NewRecord("FormDetail"); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public FormDetail(EntityData entity) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form=entity; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

#endregion wRyHTML5中文学习网 - HTML5先行者学习网

#region 属性 wRyHTML5中文学习网 - HTML5先行者学习网

public string FormDetailID wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return form["FormDetailID","FormDetail"].ToString();} wRyHTML5中文学习网 - HTML5先行者学习网

set{form["FormDetailID","FormDetail"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public string FormID wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return form["FormID","FormDetail"].ToString();} wRyHTML5中文学习网 - HTML5先行者学习网

set{form["FormID","FormDetail"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public string ProductID wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return form["ProductID","FormDetail"].ToString();} wRyHTML5中文学习网 - HTML5先行者学习网

set{form["ProductID","FormDetail"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public decimal InCount wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get{return form.GetDecimal("InCount","FormDetail");} wRyHTML5中文学习网 - HTML5先行者学习网

set{form["InCount","FormDetail"]=value;} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

#endregion wRyHTML5中文学习网 - HTML5先行者学习网

#region PersistenceCapable 成员 wRyHTML5中文学习网 - HTML5先行者学习网

public int ObjectCount wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

return form.Tables["FormDetail"].Rows.Count; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public EntityData EntityData wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

return form; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

set wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form=value; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public bool Next() wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

return form.Next("FormDetail"); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public void First() wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form.First("FormDetail"); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

public void AddNew() wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

form.NewRecord("FormDetail"); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

#endregion wRyHTML5中文学习网 - HTML5先行者学习网

}wRyHTML5中文学习网 - HTML5先行者学习网

数据的存取方式

数据存取的目的,是持久化保存对象。在Websharp中,定义了PersistenceManager接口来实现这个功能。PersistenceManager的定义可以见:附1:Websharp主要接口定义――PersistenceManager wRyHTML5中文学习网 - HTML5先行者学习网

我们可以使用如下的方式来持久化保存一个对象: wRyHTML5中文学习网 - HTML5先行者学习网

Product product=new Product (true); wRyHTML5中文学习网 - HTML5先行者学习网

……//处理product wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceManager pm = PersistenceManagerFactory.Instance(). wRyHTML5中文学习网 - HTML5先行者学习网

CreatePersistenceManager(); wRyHTML5中文学习网 - HTML5先行者学习网

pm.PersistNewObject(p); wRyHTML5中文学习网 - HTML5先行者学习网

pm.Close();
wRyHTML5中文学习网 - HTML5先行者学习网

代码非常简明和直观,没有一大堆数据库操纵的代码,也不容易发生差错。 wRyHTML5中文学习网 - HTML5先行者学习网

也可以通过向PersistenceManagerFactory 传递一个PersistenceProperty参数来初始化一个PersistenceManager,如: wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceProperty pp=new PersistenceProperty(); wRyHTML5中文学习网 - HTML5先行者学习网

pp……//设置pp的属性 wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceManager pm = PersistenceManagerFactory.Instance().CreatePersistenceManager(pp);
wRyHTML5中文学习网 - HTML5先行者学习网

关于PersistenceProperty的说明,可以见后面的系统持久化配置信息一节。 wRyHTML5中文学习网 - HTML5先行者学习网

事务处理 wRyHTML5中文学习网 - HTML5先行者学习网

在很多时候,在处理对象保存的时候,我们需要使用事务处理,特别是在处理上上面示例中的类似于入库单的一对多结构的对象的时候。在Websharp中,我们可以通过Transaction 接口来完成这个功能。Transaction接口的定义可以见:附1:Websharp主要接口定义――Transaction wRyHTML5中文学习网 - HTML5先行者学习网

下面是使用事务处理的一个例子: wRyHTML5中文学习网 - HTML5先行者学习网

Product product=new Product (true); wRyHTML5中文学习网 - HTML5先行者学习网

……//处理product wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceManager pm = PersistenceManagerFactory.Instance(). wRyHTML5中文学习网 - HTML5先行者学习网

CreatePersistenceManager(); wRyHTML5中文学习网 - HTML5先行者学习网

Transaction trans=pm.CurrentTransaction; wRyHTML5中文学习网 - HTML5先行者学习网

trans.Begin(); wRyHTML5中文学习网 - HTML5先行者学习网

try wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

pm.PersistNewObject(p); wRyHTML5中文学习网 - HTML5先行者学习网

trans.Commit(); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

catch(Excption e) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

trans.Rollback(); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

finally wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

pm.Close(); wRyHTML5中文学习网 - HTML5先行者学习网

}wRyHTML5中文学习网 - HTML5先行者学习网

对象的查询

Websharp提供了对对象查询的功能,这个功能通过Query接口提供。Query接口的定义可以见:附1:Websharp主要接口定义――Query wRyHTML5中文学习网 - HTML5先行者学习网

可以通过下面的办法来使用Query接口: wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceManager pm=PersistenceManagerFactory.Instance().CreatePersistenceManager(pp); wRyHTML5中文学习网 - HTML5先行者学习网

Query q=pm.NewQuery("Product"); wRyHTML5中文学习网 - HTML5先行者学习网

q.Filter="ProductID='P001'"; wRyHTML5中文学习网 - HTML5先行者学习网

q.Open(); wRyHTML5中文学习网 - HTML5先行者学习网

EntityData entity=q.QueryData(); wRyHTML5中文学习网 - HTML5先行者学习网

dataGrid1.DataSource=entity; wRyHTML5中文学习网 - HTML5先行者学习网

q.Close(); wRyHTML5中文学习网 - HTML5先行者学习网

pm.Close();
wRyHTML5中文学习网 - HTML5先行者学习网

Websharp也提供了直接操纵数据库的数据访问接口――DataAccess,这个接口对ADO.Net进行了一些封装,可以使程序员更加容易的使用ADO.Net的功能,并且能够屏蔽不同数据库之间的差别。这个接口的定义可以见:附1:Websharp主要接口定义――DataAccess wRyHTML5中文学习网 - HTML5先行者学习网

能够通过PersistenceManager的NewDataAccess方法来初始化一个DataAccess对象,然后调用相应的办法来执行需要的功能。 wRyHTML5中文学习网 - HTML5先行者学习网

业务逻辑的处理 wRyHTML5中文学习网 - HTML5先行者学习网

有了上面的工作,我们就可以把这些对象组合起来,编写我们的业务逻辑。在面向对象的系统中,业务逻辑表现为对象之间的交互。在一些简单的系统中,没有复杂的业务逻辑,只是一些数据的维护工作,那么,有了上面两个部分的工作,我们实际上可能已经忘成了大部分的工作。 wRyHTML5中文学习网 - HTML5先行者学习网

下面是一个简单的例子,表示了一张入库单入库的过程,在这个过程中,需要修改入库单上每种产品的现有库存量: wRyHTML5中文学习网 - HTML5先行者学习网

public void StoreIntoWarehouse(Form insertForm) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

FormDetail detail=insertForm.FormDetail; wRyHTML5中文学习网 - HTML5先行者学习网

detail.First(); wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceManager pm = PersistenceManagerFactory.Instance().CreatePersistenceManager(); wRyHTML5中文学习网 - HTML5先行者学习网

Transaction tm=pm.CurrentTransaction; wRyHTML5中文学习网 - HTML5先行者学习网

tm.Begin(); wRyHTML5中文学习网 - HTML5先行者学习网

try wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

if(detail.ObjectCount>0) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

do wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

Product product=(Product)pm.FindObjectByPrimaryKey wRyHTML5中文学习网 - HTML5先行者学习网

(detail.ProductID,Type.GetType wRyHTML5中文学习网 - HTML5先行者学习网

("LogisticsDemo.EntityDefinitions.Product")); wRyHTML5中文学习网 - HTML5先行者学习网

product.CurrentCount+=detail.InCount; wRyHTML5中文学习网 - HTML5先行者学习网

pm.UpdateObject(product); wRyHTML5中文学习网 - HTML5先行者学习网

}while(detail.Next()); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

pm.PersistNewObject(insertForm); wRyHTML5中文学习网 - HTML5先行者学习网

tm.Commit(); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

catch(Exception e) wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

tm.Rollback(); wRyHTML5中文学习网 - HTML5先行者学习网

throw e; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

finally wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

pm.Close(); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

}
wRyHTML5中文学习网 - HTML5先行者学习网

可以看到,在使用Websharp后,对于业务逻辑的编写,可以变成一个非常自然的过程,也能够节省很多代码量。 wRyHTML5中文学习网 - HTML5先行者学习网

业务服务的提供 wRyHTML5中文学习网 - HTML5先行者学习网

业务外观层(Business Facade)的目的,是隔离系统功能的提供者和使用者,更明确地说,是隔离业务逻辑的软件的用户界面(可以参见Facade设计模式)。可以使用现有的任何方法来构建构建这个层次,在我们提供的例子中,我们使用了Web Service。wRyHTML5中文学习网 - HTML5先行者学习网

Websharp应用系统的配置 wRyHTML5中文学习网 - HTML5先行者学习网

1、 缓存的配置 wRyHTML5中文学习网 - HTML5先行者学习网

Websharp使用了微软的Cached Application Block来缓存数据,因此,下面的缓存信息必须在应用程序中添加。关于Cached Application Block,可以参见微软的相关文档。 wRyHTML5中文学习网 - HTML5先行者学习网

<configuration> wRyHTML5中文学习网 - HTML5先行者学习网

<configSections> wRyHTML5中文学习网 - HTML5先行者学习网

<section name="CacheManagerSettings" type="Microsoft.ApplicationBlocks.Cache.CacheConfigurationHandler,Microsoft.ApplicationBlocks.Cache" /> wRyHTML5中文学习网 - HTML5先行者学习网

<section name="WebsharpExpirationPolicy" type="Websharp.Service.WebsharpCofigurationHandler,Websharp" /> wRyHTML5中文学习网 - HTML5先行者学习网

</configSections> wRyHTML5中文学习网 - HTML5先行者学习网

<CacheManagerSettings> wRyHTML5中文学习网 - HTML5先行者学习网

<!-- DATA PROTECTION SETTINGS wRyHTML5中文学习网 - HTML5先行者学习网

Use DataProtectionInfo to set the assembly and class which implement wRyHTML5中文学习网 - HTML5先行者学习网

the dataprotection interfaces for the cache. wRyHTML5中文学习网 - HTML5先行者学习网

--> wRyHTML5中文学习网 - HTML5先行者学习网

<DataProtectionInfo AssemblyName="Microsoft.ApplicationBlocks.Cache" wRyHTML5中文学习网 - HTML5先行者学习网

ClassName="Microsoft.ApplicationBlocks.Cache.DataProtection.DefaultDataProtection" wRyHTML5中文学习网 - HTML5先行者学习网

ValidationKey="Oci44OQ9C3xAdQ3/BMHpksPfzeTezLkXen/ahQ8T7nVk/KMgAFnssQJr00KUNhRso+MpLVwAinGep6i14X9M+A==" wRyHTML5中文学习网 - HTML5先行者学习网

Validation="SHA1"/> wRyHTML5中文学习网 - HTML5先行者学习网

<!-- STORAGE SETTINGS wRyHTML5中文学习网 - HTML5先行者学习网

Use StorageInfo to set the assembly and class which implement wRyHTML5中文学习网 - HTML5先行者学习网

the storage interfaces for the cache. wRyHTML5中文学习网 - HTML5先行者学习网

Modes: InProc, OutProc wRyHTML5中文学习网 - HTML5先行者学习网

--> wRyHTML5中文学习网 - HTML5先行者学习网

<StorageInfo AssemblyName="Microsoft.ApplicationBlocks.Cache" ClassName="Microsoft.ApplicationBlocks.Cache.Storages.SingletonCacheStorage" Mode="InProc" Validated="true" Encrypted="true" RemotingUrl="tcp://localhost:8282/CacheService" /> wRyHTML5中文学习网 - HTML5先行者学习网

<!--StorageInfo AssemblyName="Microsoft.ApplicationBlocks.Cache" ClassName="Microsoft.ApplicationBlocks.Cache.Storages.SqlServerCacheStorage" Mode="InProc" ConnectionString="user id=sa;password=msljkdv1;Network=DBMSSOCN;DATABASE=cacheab;SERVER=msljksrv02" Encrypted="true" Validated="true" ApplicationName="Sports" RemotingUrl="tcp://localhost:8282/CacheService" /--> wRyHTML5中文学习网 - HTML5先行者学习网

<!--<StorageInfo AssemblyName="Microsoft.ApplicationBlocks.Cache" ClassName="Microsoft.ApplicationBlocks.Cache.Storages.MmfCacheStorage" Mode="InProc" BasePath="c:/mmfcache/" Encrypted="true" Validated="true" MmfDictionarySize="1048576" RemotingUrl="tcp://localhost:8282/CacheService"/>--> wRyHTML5中文学习网 - HTML5先行者学习网

<!-- wRyHTML5中文学习网 - HTML5先行者学习网

MmfDictionarySize - It is the size (in bytes) of the dictionary object (in MmfCacheStorage) used to store the references of cache items. wRyHTML5中文学习网 - HTML5先行者学习网

--> wRyHTML5中文学习网 - HTML5先行者学习网

<!-- SCAVENGING SETTINGS wRyHTML5中文学习网 - HTML5先行者学习网

Use the ScavengingAlgorithm to set a class that will be executed when wRyHTML5中文学习网 - HTML5先行者学习网

scavenging is performed. wRyHTML5中文学习网 - HTML5先行者学习网

--> wRyHTML5中文学习网 - HTML5先行者学习网

<ScavengingInfo AssemblyName="Microsoft.ApplicationBlocks.Cache" ClassName="Microsoft.ApplicationBlocks.Cache.Scavenging.LruScavenging" MemoryPollingPeriod="60" UtilizationForScavenging="80" MaximumSize="5"/> wRyHTML5中文学习网 - HTML5先行者学习网

<!-- EXPIRATION SETTINGS wRyHTML5中文学习网 - HTML5先行者学习网

Use the ExpirationCheckInterval to change the interval to check for wRyHTML5中文学习网 - HTML5先行者学习网

cache items expiration. The value attribute is represented in seconds. wRyHTML5中文学习网 - HTML5先行者学习网

--> wRyHTML5中文学习网 - HTML5先行者学习网

<ExpirationInfo Interval="1" /> wRyHTML5中文学习网 - HTML5先行者学习网

</CacheManagerSettings> wRyHTML5中文学习网 - HTML5先行者学习网

<WebsharpExpirationPolicy> wRyHTML5中文学习网 - HTML5先行者学习网

<ExpirationPolicy ExpirationCheckInterval="60" AssemblyName="Microsoft.ApplicationBlocks.Cache" ClassName="Microsoft.ApplicationBlocks.Cache.ExpirationsImplementations.SlidingTime" /> wRyHTML5中文学习网 - HTML5先行者学习网

</WebsharpExpirationPolicy> wRyHTML5中文学习网 - HTML5先行者学习网

</configuration>
wRyHTML5中文学习网 - HTML5先行者学习网

2、 系统持久化配置信息 wRyHTML5中文学习网 - HTML5先行者学习网

配置PersistenceProperty,对于Web应用系统,可以在Global.asax中配置,对于Windows应用程序,可以在程序初始化时设置。 wRyHTML5中文学习网 - HTML5先行者学习网

下面是设置的一个例子: wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceProperty pp=new PersistenceProperty(); wRyHTML5中文学习网 - HTML5先行者学习网

pp.ConnectionString="server=127.0.0.1;uid=sa;pwd=;database=logisticsDemo;";//数据库连接字符串 wRyHTML5中文学习网 - HTML5先行者学习网

pp.DatabaseType=DatabaseType.MSSQLServer; //数据库类型 wRyHTML5中文学习网 - HTML5先行者学习网

pp.MapFileLocation=@"WebsharpTestLib,WebsharpTestLib.xml"; //XML定义文件的路径 wRyHTML5中文学习网 - HTML5先行者学习网

pp.MapFileLocationTye=MapFileLocationType.Assembly; //XML文件路径的类型 wRyHTML5中文学习网 - HTML5先行者学习网

pp.UserID="sa"; //数据库用户名,必须与数据库连接字符串中的用户名一致 wRyHTML5中文学习网 - HTML5先行者学习网

pp.Password=""; //数据库用户密码,必须与数据库连接字符串中的用户密码一致 wRyHTML5中文学习网 - HTML5先行者学习网

ApplicationConfiguration.DefaultPersistenceProperty=pp; //设置应用程序的默认配置属性
wRyHTML5中文学习网 - HTML5先行者学习网

配置信息的说明如下: wRyHTML5中文学习网 - HTML5先行者学习网

1) 数据库连接字符串、用户名和密码的设置按照常规设置 wRyHTML5中文学习网 - HTML5先行者学习网

2) MapFileLocationTye指明XML映射文件的路径类型,可以有三种类型: wRyHTML5中文学习网 - HTML5先行者学习网

a) AbsolutePath:采用绝对路径的形式,在这种情况下,MapFileLocation设置成绝对路径的形式,如:“d:/apppath/xml”。 wRyHTML5中文学习网 - HTML5先行者学习网

b) VirtualPath:对于Web应用程序,可以设置为虚拟路径的形式,如“/MyWebApp/EntityDefinitions/”。 wRyHTML5中文学习网 - HTML5先行者学习网

c) Assembly:XML文件作为资源文件被编译。采用这种形式,需要将XML文件的生成操作属性设置成“嵌入的资源”,这种情况下,MapFileLocation的格式为:“AssemblyName,NameSpace”。例如,XML文件位于WebsharpTestLib项目的xml文件夹下面,MapFileLocation可以设置为:“WebsharpTestLib,WebsharpTestLib.xml”wRyHTML5中文学习网 - HTML5先行者学习网

附1:Websharp主要接口定义:

PersistenceCapable: wRyHTML5中文学习网 - HTML5先行者学习网

public interface PersistenceCapable wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

EntityData EntityData{get;set;} wRyHTML5中文学习网 - HTML5先行者学习网

int ObjectCount{get;} wRyHTML5中文学习网 - HTML5先行者学习网

void AddNew(); wRyHTML5中文学习网 - HTML5先行者学习网

bool Next(); wRyHTML5中文学习网 - HTML5先行者学习网

void First(); wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceManager: wRyHTML5中文学习网 - HTML5先行者学习网

public interface PersistenceManager : IDisposable wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

void Close(); wRyHTML5中文学习网 - HTML5先行者学习网

bool IsClosed{get;} wRyHTML5中文学习网 - HTML5先行者学习网

Transaction CurrentTransaction{ get;} wRyHTML5中文学习网 - HTML5先行者学习网

bool IgnoreCache{get;set;} wRyHTML5中文学习网 - HTML5先行者学习网

void PersistNewObject(EntityData entity); wRyHTML5中文学习网 - HTML5先行者学习网

void PersistNewObject(PersistenceCapable pc); wRyHTML5中文学习网 - HTML5先行者学习网

void UpdateObject(EntityData entity); wRyHTML5中文学习网 - HTML5先行者学习网

void UpdateObject(PersistenceCapable pc); wRyHTML5中文学习网 - HTML5先行者学习网

void DeleteObject(EntityData entity); wRyHTML5中文学习网 - HTML5先行者学习网

void DeleteObject(PersistenceCapable pc); wRyHTML5中文学习网 - HTML5先行者学习网

void Reload(EntityData entity); wRyHTML5中文学习网 - HTML5先行者学习网

void Reload(PersistenceCapable pc); wRyHTML5中文学习网 - HTML5先行者学习网

void Evict (object pc); wRyHTML5中文学习网 - HTML5先行者学习网

void EvictAll (object[] pcs); wRyHTML5中文学习网 - HTML5先行者学习网

void EvictAll (ICollection pcs); wRyHTML5中文学习网 - HTML5先行者学习网

void EvictAll (); wRyHTML5中文学习网 - HTML5先行者学习网

EntityData FindEntityDataByPrimaryKey(object id,string entityTypeName); wRyHTML5中文学习网 - HTML5先行者学习网

EntityData FindEntityDataByPrimaryKey(object id,EntityData entity); wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceCapable FindObjectByPrimaryKey(object id,PersistenceCapable pc); wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceCapable FindObjectByPrimaryKey(object id,Type entityType); wRyHTML5中文学习网 - HTML5先行者学习网

Query NewQuery(); wRyHTML5中文学习网 - HTML5先行者学习网

Query NewQuery(string entityTypeName); wRyHTML5中文学习网 - HTML5先行者学习网

Query NewQuery(string entityTypeName,string filter); wRyHTML5中文学习网 - HTML5先行者学习网

Query NewQuery(string entityTypeName,string filter,QueryParameterCollection paramColletion); wRyHTML5中文学习网 - HTML5先行者学习网

DataAccess NewDataAccess(); wRyHTML5中文学习网 - HTML5先行者学习网

}
wRyHTML5中文学习网 - HTML5先行者学习网

Transaction: wRyHTML5中文学习网 - HTML5先行者学习网

public interface Transaction wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

void Begin(); wRyHTML5中文学习网 - HTML5先行者学习网

void Commit(); wRyHTML5中文学习网 - HTML5先行者学习网

void Rollback(); wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceManager PersistenceManager{get;} wRyHTML5中文学习网 - HTML5先行者学习网

}
wRyHTML5中文学习网 - HTML5先行者学习网

Query: wRyHTML5中文学习网 - HTML5先行者学习网

public interface Query wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

string EntityTypeName{get;set;} wRyHTML5中文学习网 - HTML5先行者学习网

string Filter{get;set;} wRyHTML5中文学习网 - HTML5先行者学习网

QueryParameterCollection Parameters wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

get; wRyHTML5中文学习网 - HTML5先行者学习网

set; wRyHTML5中文学习网 - HTML5先行者学习网

} wRyHTML5中文学习网 - HTML5先行者学习网

string Ordering{get;set;} wRyHTML5中文学习网 - HTML5先行者学习网

bool IgnoreCache{get;set;} wRyHTML5中文学习网 - HTML5先行者学习网

EntityData QueryData(); wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceCapable QueryObject(PersistenceCapable ps); wRyHTML5中文学习网 - HTML5先行者学习网

EntityData LoadSubObject(EntityData entity,string subTypeName); wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceCapable QueryObject(PersistenceCapable ps,string subTypeName); wRyHTML5中文学习网 - HTML5先行者学习网

EntityData LoadSubObjects(EntityData entity); wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceManager PersistenceManager{get;} wRyHTML5中文学习网 - HTML5先行者学习网

bool QuerySubObjects{get;set;} wRyHTML5中文学习网 - HTML5先行者学习网

bool IsClosed{get;} wRyHTML5中文学习网 - HTML5先行者学习网

void Close (); wRyHTML5中文学习网 - HTML5先行者学习网

void Open(); wRyHTML5中文学习网 - HTML5先行者学习网

}wRyHTML5中文学习网 - HTML5先行者学习网

DataAccess:

public interface DataAccess wRyHTML5中文学习网 - HTML5先行者学习网

{ wRyHTML5中文学习网 - HTML5先行者学习网

#region Support Property & Method wRyHTML5中文学习网 - HTML5先行者学习网

DatabaseType DatabaseType{get;} wRyHTML5中文学习网 - HTML5先行者学习网

IDbConnection DbConnection{get;} wRyHTML5中文学习网 - HTML5先行者学习网

PersistenceManager PersistenceManager{get;} wRyHTML5中文学习网 - HTML5先行者学习网

IDbTransaction BeginTransaction(); wRyHTML5中文学习网 - HTML5先行者学习网

void Open(); wRyHTML5中文学习网 - HTML5先行者学习网

void Close(); wRyHTML5中文学习网 - HTML5先行者学习网

bool IsClosed{get;} wRyHTML5中文学习网 - HTML5先行者学习网

#endregion wRyHTML5中文学习网 - HTML5先行者学习网

#region ExecuteNonQuery wRyHTML5中文学习网 - HTML5先行者学习网

int ExecuteNonQuery(CommandType commandType, string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

int ExecuteNonQuery(string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

int ExecuteNonQuery(string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

int ExecuteNonQuery(CommandType commandType, string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

#endregion ExecuteNonQuery wRyHTML5中文学习网 - HTML5先行者学习网

#region ExecuteDataSet wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(CommandType commandType, string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(CommandType commandType, string commandText,string tableName); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(string commandText,string tableName); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters,string tableName); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(string commandText, QueryParameterCollection commandParameters,string tableName); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(CommandType commandType, string commandText,DataSet ds); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(string commandText,DataSet ds); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters,DataSet ds); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(string commandText, QueryParameterCollection commandParameters,DataSet ds); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(CommandType commandType, string commandText,DataSet ds,string tableName); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(string commandText,DataSet ds,string tableName); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters,DataSet ds,string tableName); wRyHTML5中文学习网 - HTML5先行者学习网

DataSet ExecuteDataset(string commandText, QueryParameterCollection commandParameters,DataSet ds,string tableName); wRyHTML5中文学习网 - HTML5先行者学习网

#endregion ExecuteDataSet wRyHTML5中文学习网 - HTML5先行者学习网

#region ExecuteReader wRyHTML5中文学习网 - HTML5先行者学习网

IDataReader ExecuteReader(CommandType commandType, string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

IDataReader ExecuteReader(string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

IDataReader ExecuteReader(CommandType commandType, string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

IDataReader ExecuteReader(string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

#endregion ExecuteReader wRyHTML5中文学习网 - HTML5先行者学习网

#region ExecuteScalar wRyHTML5中文学习网 - HTML5先行者学习网

object ExecuteScalar(CommandType commandType, string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

object ExecuteScalar(string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

object ExecuteScalar(CommandType commandType, string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

object ExecuteScalar(string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

#endregion ExecuteScalar wRyHTML5中文学习网 - HTML5先行者学习网

#region ExecuteXmlReader wRyHTML5中文学习网 - HTML5先行者学习网

XmlReader ExecuteXmlReader(CommandType commandType, string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

XmlReader ExecuteXmlReader(string commandText); wRyHTML5中文学习网 - HTML5先行者学习网

XmlReader ExecuteXmlReader(CommandType commandType, string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

XmlReader ExecuteXmlReader(string commandText, QueryParameterCollection commandParameters); wRyHTML5中文学习网 - HTML5先行者学习网

#endregion ExecuteXmlReader wRyHTML5中文学习网 - HTML5先行者学习网

}
wRyHTML5中文学习网 - HTML5先行者学习网

附2:使用Websharp中间件开发的Demo程序一份。 wRyHTML5中文学习网 - HTML5先行者学习网


wRyHTML5中文学习网 - HTML5先行者学习网
wRyHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助