在前面介紹的很多訪問器的實現(xiàn)中,都不需要使用者提供任何關于數(shù)據(jù)庫表結構的信息(比如,主鍵、主外鍵關系等),這是因為它們都借助于IDataSchemaAccesser來獲取目標數(shù)據(jù)表的大綱信息,本文就來介紹如何使用DataRabbit框架中的IDataSchemaAccesser來訪問和操作數(shù)據(jù)表的大綱。
我們可以從DataRabbit的入口點IDataAccesser中獲取IDataSchemaAccesser引用:
IDataSchemaAccesser 主要提供兩個功能,一是獲取指定表的大綱信息,二是依據(jù)大綱信息創(chuàng)建一個新的數(shù)據(jù)表。下面是IDataSchemaAccesser的完整定義:
{
/// <summary>
/// ClearCache清空緩存的Schema
/// </summary>
void ClearCache();
/// <summary>
/// GetDataSchema獲取目標表table的數(shù)據(jù)大綱
/// </summary>
DataSchema GetDataSchema( string table);
/// <summary>
/// CreateTable在數(shù)據(jù)庫中創(chuàng)建大綱與schema一致的表
/// </summary>
void CreateTable( string table, DataSchema schema, bool createFKeys);
}
通過接口定義,我們看到,它也繼承
ITransactionAccesser
接口,這表明,IDataSchemaAccesser可以在非事務環(huán)境或事務環(huán)境中工作。
DataRabbit使用
DataSchema
來封裝數(shù)據(jù)表的大綱信息,它由多個
ColumnSchema
和N個
ForeignKey
構成,如下所示:
ColumnSchema
封裝了一個數(shù)據(jù)列的大綱信息,包括:列名、列的類型、是否為主鍵、是否為自增列、是否允許為空、備注、最大長度等。
ForeignKey
封裝了當前數(shù)據(jù)表的某個外鍵信息,包括:外鍵列名稱、主表的名稱、對應的主表主鍵名稱。
另外,
DataSchema
還提供了一個名為PrimaryKey的屬性,用于標志當前表的主鍵--可以表示單主鍵,也可以表示聯(lián)合主鍵。
最后,我們給出一個例子,該例子演示如何在Oracle中創(chuàng)建一個Student表,該表的結構與SqlServer中的Student表結構一樣。
IDataAccesser dataAccesserToOracle = ... ; // 通過DataAccesserFactory創(chuàng)建IDataAccesser
DataSchema studentSchema = dataAccesserToSqlServer.GetDataSchemaAccesser(null). GetDataSchema ( " Student " );
dataAccesserToOracle.GetDataSchemaAccesser(null). CreateTable ( " Student " ,studentSchema, false );
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
