PDF.NET(PWMIS資料開發架構)之SQL-MAP目標和規範

來源:互聯網
上載者:User

SQL-MAP的目標:

  1. 集中管理SQL語句,所有SQL語句放在專門的設定檔中進行管理;
  2. 通過替換SQL設定檔,達到平滑切換資料庫到另外一個資料庫,比如從Oracle的應用移植到SQLSERVER;
  3. 由DBA來寫程式,對於複雜的查詢,DBA寫的SQL語句和預存程序更有保障更有效率,SQL-MAP工具讓DBA也能夠寫.NET程式;
  4. 代碼自動產生,由於在SQL設定檔中指定了很多編程特性,所以可以使用專用工具將設定檔映射到.NET代碼;

 

PDF.NET 資料開發架構介紹(含執行個體程式下載)請看:

http://www.pwmis.com/sqlmap

 

SQL-MAP代碼工具的詳細使用介紹(圖解)請看:
http://www.pwmis.com/sqlmap/toolshelp.htm
----------------------
SQL-MAP的規範:
1,通用配置:

SqlMap 配置節

 EmbedAssemblySource 屬性:要將本文將嵌入的程式集名稱和資源檔名稱,格式為:
程式集名稱,預設命名空間.檔案名稱.副檔名

如果要將設定檔作為嵌入式檔案編譯,請指定該項值。該配置主要指導代碼產生器產生相應的代碼資訊。

 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:noNamespaceSchemaLocation="SqlMap.xsd"  

將這句話加入到這裡,可以使得SqlMap設定檔編寫的時候具有智能提示。需要在目前的目錄下有sqlmap.xsd 檔案。

 

2,節點類型

SQL-MAP的資料CRUD操作類型(CommandClass 的子節點類型):
          Select/Read:   選取資料操作;,
          Update:         更新資料操作;
          Insert/Create:新增資料操作;
          Delete:          刪除資料操作。

 3,節點屬性:

註:<>表示必選屬性,[]表示可選屬性        
   <CommandName>:查詢的名字,對應於SqlMap資料實體類中的方法名;
   <CommandType>:查詢命令類型,值為Text,StoredProcedure,TableDirect
   [ParameterClass]:查詢參數類,在SQLMap 中表示為一個參數類;
   <#ParaName[:System.Type[,System.DbType[,Size[,ParameterDirection[,Precision,Scale]]]]]#>:
     ParaName:查詢語句中對應的參數名,如果名稱首碼有 @@ 標記,表示該參數是一個替換參數,將忽略後面的定義;
     System.Type:可選,符合CSL規範的類型(CLT)名稱;
     System.DbType:可選,符合DbType 的枚舉,如 AnsiString 等;
     Size:可選,表示參數長度;
     ParameterDirection:可選,表示參數的輸入輸出類型的枚舉值
     Precision:可選,表示參數的資料精度,通常用於Decimal類型
     Scale:可選,表示參數的資料小數位,通常用於Decimal類型
    

{附註:

常用CLT:Byte,Int16,Int32,Int64,Single,Double,Boolean,Char,Decimal,String
[關於一般型別系統(CLT):ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconthecommontypesystem.htm ]
[DbType 枚舉:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemDataDbTypeClassTopic.htm ]
}
       
   <ResultClass>:Select 查詢的結果類型,
       如果返回單值的查詢,請指定 為 ResultClass="ValueType";
       如果返回多個行結果集,可以指定 ResultClass="DataSet",將以System.Data.DataSet的方式填充;
                                也可以指定 ResultClass="EntityObject",那麼將結果填充到實體類中;
                                或者指定 ResultClass="EntityList",那麼將結果填充到實體類列表(集合)中。
                                
       注意:Insert/Update/Delete 操作類型不需要指定該屬性。
                               
   <ResultMap>:僅僅在ResultClass="EntityObject" / "EntityList" 有效,表示實體類查詢結果映射;
                   通常表示返回單行(也可返回多行)記錄到一個資料實體物件的映射;
                   例如 要將結果集影射到一個名為 UserInfo 的自訂實體類中,注意必須使用類的全名稱:
                   ResultClass="EntityObject" ResultMap="MyDAL.UserInfo"

 

  [SqlPage]:是否允許SqlMap分頁,預設是False。該屬性僅供代碼產生器使用,不過目前的代碼產生器還沒有提供這樣的功能。

                  開啟該屬性之後,在SqlMapDAL類的方法中,參數中需要增加一個分頁資訊數組,並且調用CommandInfo對象的SetPageInfo方法,如下面的執行個體代碼(紅色的部分為需要增加的代碼):

 

        /// <summary>
        /// 返回成交明細(帶分頁)
        /// </summary>
        /// <param name="WhereString">查詢條件</param>
        /// <param name="pageInfo">設定分頁資訊,pageInfo[ 0]=記錄數量,pageInfo[ 1]=頁碼,pageInfo[ 2]=頁大小</param>
        /// <returns></returns>
        public DataSet GetTradeList(string WhereString, int[] pageInfo )
        {
            //擷取命令資訊
            CommandInfo cmdInfo = Mapper.GetCommandInfo("GetTradeList");
            //執行參數替換
            cmdInfo.SetParameterValue("WhereString", WhereString, enumParamType.ReplacedText);
            cmdInfo.SetPageInfo(pageinfo);
            //執行查詢
            return CurrentDataBase.ExecuteDataSet(CurrentDataBase.ConnectionString, cmdInfo.CommandType, cmdInfo.CommandText, null);
            //
        }//End Function

注意:你可以為你現有的SqlMapDAL方法增加一個重載,把這個重載的代碼放入一個部分類別檔案中,這樣就不用擔心代碼產生器的影響了。

   4,版本記錄:               
   ver 1.0.2 修改:
   支援同名參數,如果指令碼中有多個同名參數,那麼首先處理遇到的第一個參數,忽略後面的同名參數定義;
   支援參數“字串替換”,用於提供構造複雜動態SQL的支援,參數名用 % % 分割,
     例如 : Where #%WhereString%# 或者 Where # %WhereString% # ,系統忽略空白字元。
     
   ver 4.0 修改:
   <SqlPage>:僅僅在 SqlPage="True" 的時候,代碼產生器將產生支援分頁的DAL代碼,具體過程就是在原有參數
   的最後增加一個選擇性參數 params int[] pageInfo,並在方法體中增加  cmdInfo.SetPageInfo (pageInfo ) 語句。

SQL-MAP產生工具

1,在VS的IDE中使用XSD:

根據該規範寫了一個檢查設定檔格式的XSD,檔案地址:

http://files.cnblogs.com/bluedoctor/SqlMap.xsd.xml

由於部落格園不允許上傳XSD格式的檔案,所以大家下載這個檔案以後把.xml尾碼名去掉即可。

在編寫SQL-MAP設定檔的時候,在VS2008的菜單 “XML”-〉“架構”裡面,選擇這個檔案即可。這樣編寫設定檔就可以有智能提示了。

注意:如果下載了PDF.NET整合開發工具,在工具的安裝目錄下面,也有這個sqlmap.xsd 檔案。

2,使用SQL-MAP組態管理員:

這是一個可視化的編輯程式,可以在PdfNet整合開發工具中找到,也可以在之前版本的樣本程式包中找到。

 

是一個SqlMap設定檔跟程式結構的:

這個圖例中,SqlMap.config 檔案在SqlMapDAL目錄下,因此將這個檔案潛入式編譯的時候,它在程式集中的全名稱是“程式集預設命名空間.SqlMapDAL.SqlMap.config” ,注意這個名字對大小寫敏感。EmbedAssemblySource的前面內容部分 “GroupStatistics.Repostitory” 是當前程式集的名稱。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.