Creating DAL using typed DataSets Modifying Data using FormView web control |
对于 Database和Business对象之间的绑定,您可以使用类型化的DataSet向导完成,对于Busiess和Web控件之间的绑定您可以使用FormView控件的InserItemTemplate和EditItemTemplate 模板完成,并制定绑定规则,类似代码如下:
<asp:TextBox ID="txtLastName" Text='''' RunAt="Server" /> |
您可能已经注意到了在微软提供的例子里使用这种方式对简单应用程序来说,工作的确实相当的好,但是对于稍微复杂的应用程序来说,您就需要不断扩展自己的代码。
这种方式可以简单数据的维护,例如你需要为Customer增加一个新的属性,你就只需要更改三处就可以了:
1、数据库
2、Web Form - EditItemTemplate
3、Web Form - InsertItemTemplate
2.3 XLib方式的绑定
XLib在同时能够提供前面介绍的两种绑定方式外,还增加了数据维护方面的灵活性。XLib使用反射技术来自动从业务逻辑对象到数据库,到Web控件之间的映射。
在执行数据库到业务逻辑对象方面,它使用了XbusinessObjectBinder对象,下面的代码片断样式了Customer对象的代码:
public class Customer { … public void Load() { dataReader=new XDataReader(); //Load data using auto-generated query into XDataReader //XDataReader works just like data reader - except it automatically //converts Database values types into INulllable types //Binding #1 XBusinessObjectBinder.FromDataReader(this, dataReader); } public void Save() { XDataWriter dataWriter=new XDataWriter(); //XDataWriter automatically generates INSERT/UPDATE/DELETE sql s //statements //Binding #4 XBusinessObjectBinder.ToDataWriter(this, dataWriter) dataWriter.Update(); } } |
对于业务逻辑到Web控件的绑定,它提供了XWebControlsBinder 控件,下面代码片断显示了顾客编辑页面的代码:
public partial class EditCustomer { protected void Page_Load(object sender, EventArgs e) {…} protected void btnSubmit_Click(object sender, EventArgs e) {…} private void LoadData() { Customer customer=new Customer(); customerID=_customerID; customer.Load(); //Binding #2 XWebControlsBinder.FromObject(this, customer); } private void SaveData() { Customer customer=new Customer(); if (_isUpdateMode) { customer.ID=_customerID; customer.Load(); } //Binding #3 //Copy control values into customer properties XwebControlsBinder.ToObject(this, customer); customer.Save(); } } |