自定义可绑定数据的业务对象实体和强类型-Part Two

使用代码


步骤一 : 创建数据存取层



好吧,让我们建立数据存取层,开始"流浪".第一步,我们将创建一个空的C#.NET的解决方案,命名为"DCAF"(DataCentricApplicationFramework).第二步,添加一个C#"类库"类型的工程到解决方案中,命名为"DCAF.DataLayer".至此,你有了下面图示(如图1).


图1.初始解决方案


为了达到演示目的,我们将使用Northwind数据库,并且创建一个窗体来显示所有顾客和相关的订单.因此,我们的"DataAccessLayer"将持一个强类型的DataSet,叫做CustomerOrderTS,来实现意图.因此,在当前数据层工程的解决方案资源管理器中,右键选择"添加",下一步"新建项",下一步从列出的模板列表中选择"数据集",命名为"CustomerOrderTDS.xsd".下一步,在解决方案资源管理器中选择该强类型DataSet,单击服务器资源管理器.现在,你应该能看到数据连接面板出现在左边(如图2).


图2.服务器资源管理器


现在,我们将要添加Northwind数据中的Customer和Order表,到数据库数据源.为此,首先右击"数据连接"项,从弹出菜单中选择"添加连接".(译注:这时弹出"选择数据源"的对话框,选择"Microsoft SQL Server",点击"继续")下一步,选择你的SQL-Server实例,从数据库展开列表中选择Northwind数据库,单击"确定"按钮(如图3).


图3.添加连接


下一步,你可以看到Northwind数据库出现在左边面板中,展开树视图看到表部分,选择Customers表和Orders表(如图4),并且将它们拖到中间面板的CustomerOrdersTDS空容器上面.表已经自动添加到界面上.

图4.创建强类型DataSet


继续深入到为强类型DataSet创建的代码已经超出了本文的范围,只要知道Northwind数据库中的表+关联已经添加好了,并且每个表有它自己的TableAdapter(表适配器),在方框的外面.每个TableAdapter有一个默认自动创建的存取方法,用于加载所有的该表的数据.在下文中,当创建数据服务类时,我们将讨论这些TableAdapter的使用.


既然我们已经创建了我们的数据容器,就必须创建我们的数据服务类.这些类将作为数据访问层和业务层之间的媒介来使用.事实上,我们的数据服务类将从数据库服务器请求数据,将它们放到强类型DataSet中(一分钟前我们刚刚在演示中创建过),并且将这个DataSet发送到我们自定义业务对象中.


在部署这些服务实体之前,我们应该添加一个方法到创建好的强类型DataSet中,该方法将抓取顾客和订单数据,保持一一匹配.我们将添加一个代码方法到强类型DataSet的局部类定义(2.0中新增的).为此,在解决方案资源管理器中,选择CustomerOrdersTDS,然后选择"代码"图标查看代码.这将产生所提及的代码,如图5.


图5.局部类定义


现在我们将添加相关的代码得到Customers和Orders表整批的查询.(译注:必须手动添加相关的引用)

 

using DCAF.DataLayer.CustomerOrderTDSTableAdapters;

namespace DCAF.DataLayer
{
    
partial class CustomerOrderTDS
    
{
        
public static CustomerOrderTDS GetCustomerOrders()
        
{
            CustomersTableAdapter customerAdapter 
= new CustomersTableAdapter();
            OrdersTableAdapter orderAdapter 
= new OrdersTableAdapter();
            
            CustomerOrderTDS ds 
= new CustomerOrderTDS();
            customerAdapter.Fill(ds.Customers);
            orderAdapter.Fill(ds.Orders);
            
            
return ds;
        }

    }

}

 

显然,你能从代码中注意到,静态方法GetcustomerOrders()返回的数据,是我们要求的顾客和订单业务对象的一批数据.


开发我们的数据层的最后一步要做的是,解释我们的ServiceClass(服务类),它将成为DataLayer(数据层)和相关BusinessClasses(业务类)之间的媒介.


因此,让我们开始创建一个新的类,命名为CustomerOrderService.cs,最后的结果如在下面的代码中.

 

using System;
using System.Collections.Generic;
using System.Text;
using DCAF.DataLayer.CustomerOrderTDSTableAdapters;

namespace DCAF.DataLayer
{
    
public class CustomerOrderService
    
{
        
Storage

        
Public Interface
    }

}


你可以从代码中总结出,我们使用了单独的TableAdapter来获取自动的表数据,也使用和增强的局部强类型的方法获取顾客和订单.你可以注意到,为了得到单一的顾客或者订单表数据,我们只是使用了适配器上默认的GetData()方法,这里没有其它辣手的问题

好了,这是所有的关于数据层和数据层服务类的东西,让我们立即转到业务层.

posted @ 2008-01-21 21:22  mickeysuda  阅读(691)  评论(3编辑  收藏  举报