<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      happyhippy

      這個世界的問題在于聰明人充滿疑惑,而傻子們堅信不疑。--羅素


            沒有軟件會不存在bug,找到一個bug只能說明系統還存在Bug。MyGeneration也不例外,其中存在存在bug;但我們不能因為其有bug而不去用它,這是因噎廢食。下面就是我在使用dOOdad時遇到的幾個bug及我自己的解決辦法,發出來與大家共享,避免大家與我做重復的調試工作。

       

      1.  連接字符串初始化
              在配置文件web.config或app.config配置連接字符串。dOOdad項目中默認的key是"dbConnection",也可以修改BusinessEntity類中的_defaultConfig字段的值來修改key的默認值。
              另外,dOOdad項目有個問題就是連接字符串并沒有初始化(可能是模版的bug),這時需要手動初始化。解決方法參看我的本系列第一篇文章使用MyGeneration生成sp和代碼中的part5。


      2.  向數據庫中插入一行:

            下面是dOOdad給定一份示例代碼,執行這段代碼會有點小問題:

      Employees emps = new Employees();
      emps.AddNew();
      emps.LastName 
      = "Smith";
      emps.HireDate 
      = DataTime.Now;
      emps.Save();
      int empsID = emps.EmplyeeID;//插入后返回主鍵值。

               調用Save方法插入數據庫沒有問題,但是獲取主鍵值會拋出異常。默認生成的代碼沒有將ID作為輸出參數,所以Save后emps.EmplyeeID仍然為空,不能轉換成int。更正方法是在dOOdad生成業務實體抽象類Employees的GetInsertCommand()方法中加一條語句:

      CreateParameters(cmd);
      cmd.Parameters[
      "@ID"].Direction = ParameterDirection.Output;//要加入的語句
      return cmd;

               現在執行上面的示例代碼就不會出現異常了。

       


      3.   BusinessEntity中Setstring方法也存在問題

      protected void Setstring(string columnName, string data)
      {
          
      if(0 == data.Length) 
                 _dataRow[columnName] 
      = DBNull.Value;
          
      else
                 _dataRow[columnName] 
      = data;
      }

          顯然,當為第二個參數data傳入null時,會有問題。修正:if的判斷條件改為:if ((null == data) || (0 == data.Length))但按照FxCop性能規則,這種判斷字符串非空的方法不是很高效,推薦用String.IsNullOrEmpty(data)來判斷是否為空。其他判讀字符串非空的地方也存在同樣的問題。

       


      4. BusinessEntity類提供的ToXml()和FromXml()兩個方法,實現了字符串到業務實體的轉化。
               不過這種是由代價的:ToXml將業務實體換成string后,會丟失部分重要信息,如DataSet的Schema、DataRow的狀態(Added/Modified/Deleted)、沒有賦值的屬性等,所以FromXml不能完全轉換回原來的DataTable。
      例如:

      Employee emps = new Employee();
      emps.LoadByPrimaryKey(id)
      string s = emp.ToXml();
      Employee temp 
      = new Employee();
      temp.LoadFromXml();

               執行上面的代碼后,temp已經嚴重失真了。例如訪問temp.ID就會拋出InvalidCastException異常,訪問temp對象的其他非字符串屬性也會拋出該異常。產生這個問題原因可能是經過ToXml和FromXml轉換后,_dataRow[columnName]的數據類型信息丟失了,統一都成了string類型,強制類型轉換會拋出異常。
               Getbool、Getint等一系列Get***方法(GetString除外)都存在這個問題,解決辦法是用Convert類來轉換,將強制類型轉換換成Convert.To***()。

       

      5.  更多的Bug,正等著大家去發現^_^



      posted on 2006-08-23 05:17  Silent Void  閱讀(1212)  評論(1)    收藏  舉報

      主站蜘蛛池模板: 亚洲精品一区二区三区大桥未久| 狠狠色噜噜狠狠狠狠2021| 中文字幕国产精品av| 一道本AV免费不卡播放| 嫩草研究院久久久精品| 国产在线精品一区二区夜色| 欧美丰满熟妇xxxx性| 武夷山市| 美女一区二区三区在线观看视频| 免费视频成人片在线观看| 亚洲av成人在线一区| 国产av日韩精品一区二区| 国产乱码精品一区二三区| 日韩精品 在线 国产 丝袜| 亚洲国产精品视频一二区| 亚洲精品一区二区三区大桥未久| 午夜精品极品粉嫩国产尤物| 亚洲中文字幕无码av永久| 国产成人综合色视频精品| 久久国产精品成人影院| 亚洲av日韩av永久无码电影| 高清国产av一区二区三区| 精品国产亚洲一区二区三区在线观看| 天堂www在线中文| 久热久视频免费在线观看| 久久精品免视看国产成人| 少妇被粗大猛进进出出| 久久精品噜噜噜成人av| 久久亚洲精精品中文字幕| 国产欧美综合在线观看第十页| 国模雨珍浓密毛大尺度150p| 亚洲AV无码破坏版在线观看| 午夜福利看片在线观看| 免费无码高H视频在线观看| 777奇米四色成人影视色区| 欧美一区二区三区性视频| 老熟妇欲乱一区二区三区| 不卡乱辈伦在线看中文字幕| 色猫咪av在线网址| 乱码精品一区二区亚洲区| 深夜福利资源在线观看|