在前面介紹的很多訪問器的實現(xiàn)中,都不需要使用者提供任何關(guān)于數(shù)據(jù)庫表結(jié)構(gòu)的信息(比如,主鍵、主外鍵關(guān)系等),這是因為它們都借助于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
      
      構(gòu)成,如下所示:
      
      
         
      
    
      
        ColumnSchema
      
      封裝了一個數(shù)據(jù)列的大綱信息,包括:列名、列的類型、是否為主鍵、是否為自增列、是否允許為空、備注、最大長度等。
      
      
        ForeignKey
      
      封裝了當前數(shù)據(jù)表的某個外鍵信息,包括:外鍵列名稱、主表的名稱、對應的主表主鍵名稱。
      
      另外,
      
        DataSchema
      
      還提供了一個名為PrimaryKey的屬性,用于標志當前表的主鍵--可以表示單主鍵,也可以表示聯(lián)合主鍵。
      
      
         
      
      
      
       最后,我們給出一個例子,該例子演示如何在Oracle中創(chuàng)建一個Student表,該表的結(jié)構(gòu)與SqlServer中的Student表結(jié)構(gòu)一樣。
    
IDataAccesser dataAccesserToOracle = ... ; // 通過DataAccesserFactory創(chuàng)建IDataAccesser
DataSchema studentSchema = dataAccesserToSqlServer.GetDataSchemaAccesser(null). GetDataSchema ( " Student " );
dataAccesserToOracle.GetDataSchemaAccesser(null). CreateTable ( " Student " ,studentSchema, false );
      轉(zhuǎn)到:
      
        DataRabbit 輕量的數(shù)據(jù)訪問框架 -- 序
      
      
      
      
      
      
      
    
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061
 
					微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
 
					

