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

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

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      Dev Guide: js | css | HTML(DOM) WEBCAST .NET4 Lib Web.config-WCF MVC3-EF4.1 T-SQL-(2012)

      淺談EF 4 CodeFirst的調試技巧及注意要點

      I:寫本篇博客文章的起因

      本小蝦昨天按照項目進度安排在做一個項目模塊,里面有一個功能就是將客戶錄入好的Excel文件(Excel2003/2007)通過后臺管理網站上傳并導入至MSSQL數據庫內的表里。

      心想這個小case應該難度不大。博主便選擇了NPOI 2.0.1(beta1)加EF 4.1去開發。結果碰到一個很莫名其妙的錯誤。所以才有幸寫下這篇博客文章!記錄一下以免各位遇到相同情況的時候可以注意一下。

      II:EF 4 CodeFirst調試基礎知識

      不管是EF還是LINQ2SQL還是其他ORM,他們底層基本上都是使用ADO.NET的原生類庫去操作讀寫數據庫的。作為開發人員我們迫切需要有一個工具可以監視得到ORM提交給MSSQL的T-SQL腳本命令以方便進行排bug,在此本人推薦各位使用MSSQL自帶的SQL Server Profiler。它的打開方式如下:

      image

      切記Express版本的SQL Server是沒有集成這個工具的。

      跟蹤一個數據庫的當前正在執行的腳本信息
      打開SQL Server Profiler,點擊[文件] –> [新建跟蹤] 登陸到數據庫服務后跳轉到如下圖示:
      image
      注意勾選[顯示所有列]的復選框,緊接著單擊[列篩選器]按鈕。在彈出的對話框當中設置需要監視的DatabaseID(不知道自己數據庫是那個Id的可以執行[select * from sys.databases]查看)image
      輸入好數據庫ID過濾篩選條件后點擊[確定],然后再點擊[運行]按鈕,最終效果圖如下圖示:
      image
      添加數據庫ID篩選條件的作用在此我簡單介紹一下,它可以幫助我們過濾掉一些毫無意義的腳本命令,讓我們更加關心跟蹤對象本身。

      關于SQL Server Profiler的工具欄及菜單我就不一一介紹了。接下來還是進入正題!

      III:工作任務當中出現的詭異錯誤

      進行編碼工作的調試時發現EF報錯,錯誤的原因盡然是EF 4.1往MSSQL上提交了一條全為空的字符串信息從而導致表的外鍵約束規則異常:
      image
      .NET異常圖,由于List<T>的數量巨大。所以無法一一定義到底是那一個對象的屬性值是"空"。


      image
      對應上述.NET異常跟蹤到的T-SQL顯示EF提交的sql既然是由于插入了N''空字符串導致外鍵約束驗證出錯。
      對此樓主的做法時加入了一個變量它的作用就是將空白的對象打入log內。

      var logVal = List.Select(m => string.IsNullOrEmpty(m.Key)).ToList();
      

        

      再進行一輪反復【修改代碼 <--> 調試】后,發現出錯的原因盡然是Excel文件內最后空出來的幾行沒有被刪掉卻被NPOI讀出來后當成N''插入到數據庫里面去了。所以才會法傷上面插入N’’字符串引發的外鍵約束報錯。

      果斷對其下癥Fixbug:

      image

       

      最后成功執行導入的截圖:
      image

      IV:結論

      請相信機器是根據人的意愿去執行代碼的。大多數情況下不會無端端執行出錯(比如胡亂插入幾行N’’空記錄)。

      因此,對于經常使用ORM的我們來說學會抓取ORM執行的t-sql已經是一門必備的技能了,另外在程序代碼方面也要做好完善的log跟蹤輸出!

      本文到此結束!

      posted @ 2013-03-20 18:44  dotNetDR_  閱讀(2354)  評論(9)    收藏  舉報
      主站蜘蛛池模板: 欧美视频二区欧美影视| 久热视频这里只有精品6| 天堂a无码a无线孕交| 中文字幕乱妇无码AV在线| 奇米影视7777狠狠狠狠色| 91精品国产自产在线蜜臀| 久久综合97丁香色香蕉| 2020年最新国产精品正在播放| 无码日韩做暖暖大全免费不卡| 丰满的少妇被猛烈进入白浆| 亚洲精品成人老司机影视| 亚洲免费视频一区二区三区| 少妇久久久被弄到高潮| 永久免费无码网站在线观看| 色吊丝一区二区中文字幕| 国产熟睡乱子伦视频在线播放| 狠狠噜天天噜日日噜视频麻豆| 蜜桃成熟色综合久久av| 久久永久视频| 蜜桃亚洲一区二区三区四| 亚洲国产欧美一区二区好看电影 | 国产自产av一区二区三区性色| 五月婷之久久综合丝袜美腿| 婷婷99视频精品全部在线观看 | 忘忧草www日本韩国| 国产成人啪精品午夜网站| 亚洲欧洲国产综合一区二区| 亚洲av片在线免费观看| 九九热久久只有精品2| 野花社区www视频日本| 牟定县| 污网站在线观看视频| 国产成人免费一区二区三区| 黑人巨大无码中文字幕无码| 青川县| 国内在线视频一区二区三区| 香蕉亚洲欧洲在线一区| 亚洲欧洲久久激情久av| 日韩国产精品中文字幕| 中文字幕人妻精品在线| 久久人搡人人玩人妻精品|