网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

三层Web体系结构里的两种数据绑定模式

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
 在这种情况下,当Customer对象有更多属性时,您就需要编写更多的代码来完成数据绑定功能。如果您想为Customer新增加一个属性,你不得不在6个地方进行更改:

  1)数据库

  2)数据绑定1--数据业务逻辑对象

  3)数据绑定2--业务逻辑对象在绑定到Web控件上

  4)在Web窗体上添加新的控件

  5)数据绑定3--Web控件绑定到业务逻辑上

  6)数据绑定4--业务逻辑到数据库上

  正如您所看到的上面方法的缺点--重复工作大且维护困难

  2.2 使用微软的方式--类型化的DataSet和FormView

  对于这个方法,微软已经为我们提供了很多例子了,,如果您的程序足够简单,那么您就可以从Customer表里生成一个类型化的DataSet,并将其绑定到FormView上,由FormView来执行添加和编辑Customer对象的功能,您可以在下面两个地方发现如何使用他们:

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();
 }

 

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号