zhuweisky

君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。
ESFramework,基于.NET的通信框架。DataRabbit,轻量的数据访问框架。DCFramework,基于.NET的动态分布式计算框架。sky.zhuwei@163.com

统计

留言簿

积分与排名

好友博客

阅读排行榜

评论排行榜

DataRabbit 轻量的数据访问框架(09) -- IDataSchemaAccesser

   (完全限定类名:DataRabbit.Schema.IDataSchemaAccesser

   在前面介绍的很多访问器的实现中,都不需要使用者提供任何关于数据库表结构的信息(比如,主键、主外键关系等),这是因为它们都借助于IDataSchemaAccesser来获取目标数据表的大纲信息,本文就来介绍如何使用DataRabbit框架中的IDataSchemaAccesser来访问和操作数据表的大纲。

   我们可以从DataRabbit的入口点IDataAccesser中获取IDataSchemaAccesser引用: 
   IDataSchemaAccesser dataSchemaAccesser = dataAccesser.GetDataSchemaAccesser(null);
   注意,与获取前面介绍的各种访问器一样,IDataSchemaAccesser也是通过一个Get方法得到。

   IDataSchemaAccesser 主要提供两个功能,一是获取指定表的大纲信息,二是依据大纲信息创建一个新的数据表。下面是IDataSchemaAccesser的完整定义:
    public interface IDataSchemaAccesser : ITransactionAccesser 
    {
        
/// <summary>
        
/// ClearCache 清空缓存的Schema
        
/// </summary>
        void ClearCache();

        
/// <summary>
        
/// GetDataSchema 获取目标表table的数据大纲
        
/// </summary>       
        DataSchema GetDataSchema(string table);

        
/// <summary>
        
/// CreateTable 在数据库中创建大纲与schema一致的表
        
/// </summary>       
        void CreateTable(string table ,DataSchema schema, bool createFKeys) ;
    }

   通过接口定义,我们看到,它也继承 ITransactionAccesser 接口,这表明,IDataSchemaAccesser可以在非事务环境或事务环境中工作。
   DataRabbit使用DataSchema来封装数据表的大纲信息,它由多个ColumnSchema和N个ForeignKey构成,如下所示:

   ColumnSchema封装了一个数据列的大纲信息,包括:列名、列的类型、是否为主键、是否为自增列、是否允许为空、备注、最大长度等。
   ForeignKey封装了当前数据表的某个外键信息,包括:外键列名称、主表的名称、对应的主表主键名称。
   另外,DataSchema还提供了一个名为PrimaryKey的属性,用于标志当前表的主键--可以表示单主键,也可以表示联合主键。


    最后,我们给出一个例子,该例子演示如何在Oracle中创建一个Student表,该表的结构与SqlServer中的Student表结构一样。

            IDataAccesser dataAccesserToSqlServer = ...;//通过DataAccesserFactory创建IDataAccesser
            IDataAccesser dataAccesserToOracle = ... ;//通过DataAccesserFactory创建IDataAccesser

            DataSchema studentSchema 
= dataAccesserToSqlServer.GetDataSchemaAccesser(null).GetDataSchema("Student");
            dataAccesserToOracle.GetDataSchemaAccesser(null).CreateTable(
"Student", studentSchema, false);

 

转到:DataRabbit 轻量的数据访问框架 -- 序





posted on 2007-03-22 10:30 zhuweisky 阅读(2515) 评论(3)  编辑 收藏 网摘 所属分类: DataRabbit

评论

#1楼 2007-03-22 11:52 JesseZhao      

比较喜欢这种模式
  回复  引用  查看    

#2楼 2007-03-23 11:18 jhyc[未注册用户]

一直在关注楼主的这个系列阿,挺不错的。真希望楼主等全部连载完了能弄个chm之类的文档哦:)   回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 683615




相关文章:

相关链接: