DTS开发记录(3)-- 连接与连接对

     在 DTS开发记录(2)-- 数据管道及插件 一文中,我们介绍了数据管道,IDataPipeFactory的CreateDataPipe方法需要一个IConnection参数,这个参数就表示一个连接。

public  IDataPipe CreateDataPipe(IConnection conn)

    IConnection的定义如下:

    ///   <summary>
    
///  IConnection 用于表示到数据源或数据目标的连接
    
///   </summary>
     public   interface  IConnection
    {
        ConnectionType ConnectionType { 
get ;}
        
string  ConnectionText {  get ;}
        
string  PKeyName {  get ; set ; }
    }

    
public   enum  ConnectionType
    {
        DataBase ,File
    }

    无论该连接是指向数据库的一个表还是某个结构化的文件,都需要设定一个主键名称,设定该主键名称的作用在于两个方面:
(1)用于分页(有的数据库可能不需要知道主键就可以分页,比如Oracle)
(2)用于增量导出。

    到目前为止,连接分为两种类型--数据库类型和文件类型。对于数据库类型的连接,可以用连接字符串来标志;对于文件类型的连接,可以使用文件路径来标志。
    我们知道,数据库分为不同的类型,这是由DataBaseType标志的;那么,文件也有不同的类型,比如.Xml、.Txt等,怎么区分它们了?是的,使用文件的扩展名,因为同一类型的文件的扩展名是相同的。所以,我们看到FileConnection有个ExtendName属性。
    ConnectionText属性,就像ToString()方法一样,这样当我们需要在UI上显示IConnection时,可以取用其ConnectionText属性的值。对于文件类型的连接,它将返回文件路径;对于数据库类型的连接,它将返回连接字符串及目标数据表的名字。
    下面是FileConnection和DatabaseConnection的类图:



    讲到这里,我可以大致说一下IDataPipeFactory创建数据管道的过程。首先,从IConnection中获取ConnectionType,如果是文件类型,则将之向下转换到FileConnection,然后得到ExtendName属性,最后在数据管道插件列表中寻找支持该ExtendName的数据管道插件。对于数据库类型的IConnection,过程也是相似,只不过,它是依据DataBaseType来寻找对应的数据管道插件。
    如果和数据管道插件对照起来看,就更清楚了:



    连接对(ConnectionPair),一个连接对包含了一个数据源和一个数据目标的连接信息。将连接对独立出来的好处是,当配置好一个连接对后,可以在不同的地方复用它,比如在编辑映射的时候、在数据验证的时候、在数据传送的时候等。


    使用ConnectionPair可以使我们的程序结构非常的清晰,因为它抽象了底层的连接类型。但是,在通过界面来配置ConnectionPair时,就不那么容易了,你会迫不得已的遇到很多向下转换,我正在思考一种解决方案来避免这种向下转换。你有好的想法吗?


转到:DTS开发记录(序)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值