The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

改用 SqlMetal.exe 建立 LINQ to SQL 的 DBML 檔

我們通常在寫 LINQ to SQL 專案時,都會利用 Visual Studio 2008 內建的 LINQ to SQL DBML Designer 讓我們透過視覺化的介面將資料庫表格、檢視表或預儲程序從 Server Explorer 拖曳到設計視窗中,不過缺點就是當資料庫結構(DB Schema)改變了之後就需要跟著修正,我通常有以下選擇:

... 繼續閱讀 ...

開發ASP.NET請不要使用 Environment.CurrentDirectory

我們之前有位新手工程師(現在已經不新了)曾經在 ASP.NET 中使用 Environment.CurrentDirectory ( 取得目前之工作目錄的完整路徑 ) 來存取網站內的檔案,一般來說很少有人會用 Environment.CurrentDirectory 來存取網站上的檔案路徑,我自己猜測應該是一般的 C# 書籍都是用 Console Program 來撰寫範例,所以可能是新手上路搞不清楚狀況才這樣寫,而且在 Visual Studio 的開發環境中這樣使用還真的不會出錯呢!所以才導致新人一直使用錯誤的方法開發,直到程式被部署到測試主機後才發現程式無法執行。

... 繼續閱讀 ...

.NET 3.5 Enhancements Training Kit RTM

之前在 Visual Studio 2008 推出的時候,同時也推出了一套 Visual Studio 2008 and .NET Framework 3.5 Training Kit 訓練教材,可供開發人員下載自我學習。而隨著這次 Visual Studio 2008 Service Pack 1.Net Framework 3.5 Service Pack 1 的推出,也同時推出了 .NET 3.5 Enhancements Training Kit 訓練教材,其中包含了許多新增的範例程式、簡報、實驗演練(Labs)教材等,想學習新技術的人不用在等了,趕快下載回去自修吧。

... 繼續閱讀 ...

透過 Fiddler 快速修改網頁內容用以除錯上線的網站

大家都知道 Fiddler 可以用來做 HTTP 追蹤/除錯,尤其是對 JavaScript/AJAX/XHR 使用頻繁的今天更是必備的工具之一,除了可以抓取所有 HTTP 的封包外,Fiddler 還可以用來修改透過 HTTP 傳回來的網頁內容(HTML)、JavaScript 檔(*.js)、CSS 檔(*.css) 或任何圖檔,都可以透過自訂的 Fiddler Script 或 Extension Plugins 進行修正後再傳回到瀏覽器中,這對於已經上線的網站來說,十分的適合用來測試 HTML/CSS/JS 修改過後的顯示結果。

... 繼續閱讀 ...

介紹好網站:Regular Expression Library

之前就講過 Regular Expression 是學一次用一輩子且是程式設計師一定要學的技能之一,不過由於 Regular Expression 的語法太過特殊且功能強大,讓許多人在初學的時候就很害怕,甚至乾脆不學,有需要的時候就到網路上到處找,雖然也能解決問題,不過複製一個看不懂的東西內心總是不太紮實的,所以我建議無論如何任何一位程式設計師都一定要花時間學會看懂所有 Regular Expression 語法,並進而自行撰寫所需的 Regular Expression 表示式。

... 繼續閱讀 ...

如何強迫 .Net 應用程式輸出英文的例外訊息

因為常常需要跟國外 Blogger 交流,甚至回報某些國外 .Net 產品的 Bug 給他們,所以常常都要自行翻譯「例外訊息」( Exception Message ),不過有時後真的會翻錯。再者,若在開發 .Net 時遇到一些很少見的問題,用中文搜尋不到時,可能會想將訊息翻成英文後再搜尋一次,不過也有可能因為翻譯錯誤導致搜尋結果不夠精準。所以若能夠在除錯的時候輸出英文版的例外訊息,那該有多好阿!

... 繼續閱讀 ...

透過 OleDb 精準讀入 Excel 檔的方法

之前因為有個案子要做 Excel 匯入的功能,需要讓客戶先下載匯入檔案範本,然後讓客戶上傳 Excel 檔 ( *.xls ),再透過 C# 讀取資料後存入資料庫,我是採用 OleDb 的方式在 Server 端開啟檔案並將資料讀出,不過卻遇到了幾個難解的問題,其中最討厭的問題就是透過 OleDb 載入資料時,它都會自動判斷 Excel 中每個欄位的型別,假設工作表中的第三欄的前 8 列的值是「數字」,而第 9 列的「文字」的話,當讀取到第 3 欄第 9 列的時候,該儲存格的欄位值就會是 Null,可能會引發程式執行錯誤(因為你會預期有資料)。

... 繼續閱讀 ...