在前面介紹的很多訪問器的實現中,都不需要使用者提供任何關于數據庫表結構的信息(比如,主鍵、主外鍵關系等),這是因為它們都借助于IDataSchemaAccesser來獲取目標數據表的大綱信息,本文就來介紹如何使用DataRabbit框架中的IDataSchemaAccesser來訪問和操作數據表的大綱。
我們可以從DataRabbit的入口點IDataAccesser中獲取IDataSchemaAccesser引用:
IDataSchemaAccesser 主要提供兩個功能,一是獲取指定表的大綱信息,二是依據大綱信息創建一個新的數據表。下面是IDataSchemaAccesser的完整定義:
{
/// <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 dataAccesserToOracle = ... ; // 通過DataAccesserFactory創建IDataAccesser
DataSchema studentSchema = dataAccesserToSqlServer.GetDataSchemaAccesser(null). GetDataSchema ( " Student " );
dataAccesserToOracle.GetDataSchemaAccesser(null). CreateTable ( " Student " ,studentSchema, false );
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

