[EF] 如何在 Entity Framework 中以手動方式設定 Code First 的 Migration 作業

Entity Framework (簡稱 EF) 發展到現在, 版本已經進入 6.1.0, 距離我寫的「在 VS2013 以 Code First 方式建立 EF 資料庫」這篇文章已有半年的時間。如果你和我一樣從那時候開始使用 EF Code First, 那麼你對 EF 應該已經有了基本的了解。依我個人的使用經驗, EF 雖然好用, 但是如果一直使用 AutomaticMigrations 的方式維護你的資料庫, 也許會遇到一些麻煩。因為在正常作業環境下, 資料庫的格式不可能永遠不變; 當我們已經開始寫入資料之後, 情況會變得更複雜, 迫使我們不得不去探究更適當、更有彈性的做法...

...繼續閱讀 »

[ASP.NET] Visual Studio 2013 的 Form 驗證

從 Visual Studio 2013 / .Net Framework 4.5.1 開始, 關於使用者驗證這件事, 可以說做了革命性的改變。大家在過去 12 年來再熟悉不過的表單驗證方式, 在這個版本中再也沒辦法使用 (或者更正確地說, 是沒辦法延用過去的做法)。相反地, 我發現它對 AD 認證的支援變得異常地簡單; 如果你在建立專案時選擇 Windows 驗證, 那麼你的網站自動可以抓取使用者的網域登入帳號, 不必再寫任何程式。如果你要寫的是企業內部網站的話, 就變得相當容易了。至於新的表單驗證方式, 我們會面臨的最大的困難在於不熟悉, 以及資訊太少(未來會慢慢變多, 這是確定的)。其實我是直到最近一個專案中需要用到表單驗證, 才突然驚覺它被改掉了。但是兩個多禮拜下來, 我覺得它其實基本上和原來的表單驗證方式並沒有太多的差異。你只要了解它的運作原理, 就會逐漸習慣...

...繼續閱讀 »

[ASP.NET] 動態變更 SqlDataSource 中使用的 Web.config 裡的 Connection 字串

在我目前的工作中, 環境略為有點複雜, 牽涉到開發、測試和正式環境, 而使用的資料庫伺服器也有兩到三個。如果能夠動態地切換不同環境下所使用的資料庫連線字串, 一定對工作相當有幫助。當然, 如果我都寫 ADO.NET 指令去指定連線字串, 我自然可以動態地決定應該採用哪一個連線字串。但是, 我又不想放棄簡單易用的 GridView/FormView 搭配 SqlDataSource 的作業方式。無可誨言的, 對於那些許多很小型的資料表、很少的資料、很簡單的工作, 實在沒有什麼能比上述情境更方便處理了...

...繼續閱讀 »

在單元測試程式中取得 Connection 字串

這是一個相當古老的問題。不過, 似乎也很久沒遇到過了。當今天再度遇到時, 突然被嚇了一跳。問題是這樣的, 當我們建立單元測試專案時, 如果你看到測試不成功的原因是什麼「System.ArgumentException: 此處不允許應用程式相對虛擬路徑 '~/'」之類莫名其妙的錯誤的話, 大概就是依照以下解法就對了...

...繼續閱讀 »

在 Visual Studio 建立資料庫專案

我從很久以前就對 Visual Studio 中新加入的資料庫專案範本感到很有興趣; 但是一來我並不熟資料庫, 二來工作上也用不到, 所以從來沒有真正較深入地研究它, 只有嘗試過建立幾個測試專案, 然後被搞得灰頭土臉, 被迫放棄。但是最近由於工作上突然有了一點變化, 讓我回頭來思考在原來的專案中加上一個資料庫專案的想法, 所以就重新把它又拿來研究一番...

...繼續閱讀 »

在 VS2013 Preview 中使用 Scaffolding 快速建立 CRUD 網頁

在 VS2013 Preview 中, 我們可以透過它的 Scaffolding (支架) 功能在 MVC 專案中快速建立一整套的 CRUD 網頁, 不用寫一行程式碼。甚至, 它已經內建了 Bootstrap 框架, 這使得我們甚至不需要具備美工能力, 也能設計出比以前漂亮得多的網頁...

...繼續閱讀 »

.Net Interoperation 入門

Interoperation是工程界普遍使用的字眼, 專指在不同系統中搭起的簡易或臨時的元件, 藉由製訂某些共通的協定, 以便這些系統可以共同作業。由於這個溝通界面可能並非非常嚴謹, 所以當其運作時, 必須特別有人從旁監督、隨時調整和修改。在.Net 中, Interoperation 專指從.Net 應用程式中存取unmanaged 程式元件的行為。我們知道, 當我們撰寫.Net 應用程式或元件時, 這些元件都是managed (受.Net 執行環境所管理的)。但是如果是使用VB6/C/C++ 所撰寫的非.Net 程式或元件, 對.Net 而言, 都算是unmanaged。如果我們企圖在.Net 程式中存取那些unmanaged 程式或資源, 就必須透過Interoperation 技巧與COM 介接。此外, 許多Windows API 並沒有.Net 的對應函式。換句話說, 如果我們要撰寫Windows 應用程式, 而且我們必須使用到Windows API 的話, 我們沒辦法從.Net Framework 執行環境中找到對應的方法, 而必須透過Interoperation 去呼叫W

...繼續閱讀 »

[入門] .Net 非同步處理與同步機制全解析 (一)

不管你學的是何種程式語言, 非同步及平行處理總是最令人費解的部份之一。如果你沒有過人的邏輯觀念, 那麼要把非同步程式寫好, 恐怕有一定的困難度。不過最難的部份不在技術上, 而是到底在何種場合下可以採用非同步或平行處理。在日常生活中, 我們採用的邏輯大多是循序進行的, 也就是說, 等到前一件事情完成之後, 才去進行下一件。但是在某些情況下, 非同步處理是比較合乎情理的做法...

...繼續閱讀 »

使用 DataSet 建立一個三層式架構的資料存取網頁

在上文中作者示範了一個使用 VS2008, 利用 DataSet/ObjectDataSource 以建立 3-tier 的資料存取網頁。重點在於作者是使用螢幕錄影的方式進行教學的, 十分清楚易懂。在微軟又發表一大堆新技術的今天(像 LINQ、Entity Framework 等), 我們仍能看到使用傳統 ADO.NET 方式來存取資料的教學, 這已經愈來愈不容易了...

...繼續閱讀 »