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

系统 2067 0
(完全限定类名: 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 构成,如下所示:
DataRabbit 轻量的数据访问框架(09) -- IDataSchemaAccesser

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

最后,我们给出一个例子,该例子演示如何在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 轻量的数据访问框架 -- 序





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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论