首页 > 新闻系统 > 网络编程 > Asp.Net > 文章正文

ASP.NET 2.0 ObjectDataSource控件

2006-08-14 14:08:48 来源:天极yesky 作者: 点击:

绑定到业务逻辑层

  关于数据访问层,我们还需要重点的注意的是,由于SelectMethod把执行查询的结果作为数据视图返回,它仍然把下层数据库的大纲暴露给了显示页面。还有,在数据访问层没有业务规则;它只是简单地执行查询和返回结果。如果需要把显示与数据库大纲隔离开来,并引入业务规则或验证过程,通常需要把数据访问层包装到业务逻辑层中。

  业务逻辑层与DAL类似,它给ObjectDataSource暴露了无状态的方法,用于绑定Web页面中的控件。但是,它一般不会直接返回ADO.NET结果,而是返回强化类型的对象,这些对象表现了应用程序所使用的业务实体。这种显示层与下层数据存储大纲的分离,使我们更容易地单独维护站点中的数据访问部分,而不用修改使用数据的页面。只要有恰当的中间层,你就可以全面修改下层数据存储大纲,而不用更新应用程序中的独立页面。

  下面就是一个业务逻辑层的例子。

public class MyBusinessLayer {

 public RecordCollection GetRecords();
 public RecordCollection GetRecordsByCategory(String categoryName);
 public RecordCollection GetRecordByID(int recordID);
 public String GetRecordName(int recordID);
 public Object GetRecordData(int recordID);

 public int UpdateRecord(Record r);
 public int DeleteRecord(Record r);
 public int InsertRecord(Record r);

 public int UpdateRecordData(int ID, String Data);
 public int UpdateRecordName(int ID, String Name);
}

public class Record {
 public int ID { get; set; }
 public String Name { get; set; }
 public Object Data { get; set; }
}


  业务逻辑层和数据访问层之间的主要区别在于,业务逻辑层返回的是强化类型的Record对象的集合(RecordCollection),而不是数据视图。它也允许我们把这个Record对象作为参数进行更新、插入和删除操作。ObjectDataSource的DataObjectTypeName属性允许你配置ObjectDataSource,给它传递类型而不是字段值。在业务逻辑层的方法实现中,你可以包含用于验证业务规则的自定义逻辑。例如,你可以确保只有“检查中”类别的Record才能被更新,或者只有Administrators才能插入新记录。你还可以包含验证逻辑以确保在插入或修改数据库的数据之前,作为参数传递进来的数据类型和值是正确的。请注意,业务逻辑层中的验证规则不是显示层的输入验证(它指导终端用户在提交更新之前输入正确的值)的替代品。

  下面的例子演示了一个叫做AuthorsComponent的简单业务逻辑层。在它内部,BLL通过DAL调用来实际执行数据库操作。为了简单,BLL没有包含任何业务规则或验证,尽管它可能是一个现实的应用程序。我们还要注意,这个例子没有通过编写自定义集合类来返回强化类型的记录,而是利用了.NET框架组件2.0中的称为“范型(Generics)”的新语言特性来建立Author对象集合。使用强化类型集合让ObjectDataSource在设计时(在Visual Studio和其它工具中)能够推导出业务对象的大纲。

<asp:DropDownList ID="DropDownList1" Runat="server" DataSourceID="ObjectDataSource2" AutoPostBack="True" />
<asp:ObjectDataSource ID="ObjectDataSource2" Runat="server" TypeName="AuthorsComponent" SelectMethod="GetStates"/>
<asp:GridView ID="GridView1" Runat="server" DataSourceID="ObjectDataSource1" AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True">
……
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" Runat="server" TypeName="AuthorsComponent" SelectMethod="GetAuthorsByState" UpdateMethod="UpdateAuthor" DataObjectTypeName="Author" SortParameterName="sortExpression">
……
</asp:ObjectDataSource>

9 7 3 1 2 3 4 4 8 :

精彩推荐
本类热门文章

论坛美图

本周软件下载排行

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203