Entity Framework (簡稱 EF) 發展到現在, 版本已經進入 6.1.0, 距離我寫的「在 VS2013 以 Code First 方式建立 EF 資料庫」這篇文章已有半年的時間。如果你和我一樣從那時候開始使用 EF Code First, 那麼你對 EF 應該已經有了基本的了解。依我個人的使用經驗, EF 雖然好用, 但是如果一直使用 AutomaticMigrations 的方式維護你的資料庫, 也許會遇到一些麻煩。因為在正常作業環境下, 資料庫的格式不可能永遠不變; 當我們已經開始寫入資料之後, 情況會變得更複雜, 迫使我們不得不去探究更適當、更有彈性的做法。
2014/4/24
2013/12/5
Linq2Excel 的陷阱與處理方法
Linq2Excel 是一個非常方便好用的小工具, 它是一個 Excel 專用的 LINQ Provider, 可以讓我們很快速地讀取 Excel (包括 Excel 2013) 的試算表。我們可以直接在 Visual Studio 中透過 NuGet 取得, 目前的版本是 1.7.1。
如果你對這個套件有興趣, 你可以參考「LINQ - 實作 LinqToExcel」這篇文章, 足以讓你快速入門
2013/10/1
[ASP.NET] 動態變更 SqlDataSource 中使用的 Web.config 裡的 Connection 字串
在我目前的工作中, 環境略為有點複雜, 牽涉到開發、測試和正式環境, 而使用的資料庫伺服器也有兩到三個。如果能夠動態地切換不同環境下所使用的資料庫連線字串, 一定對工作相當有幫助。
當然, 如果我都寫 ADO.NET 指令去指定連線字串, 我自然可以動態地決定應該採用哪一個連線字串。但是, 我又不想放棄簡單易用的 GridView/FormView 搭配 SqlDataSource 的作業方式。無可誨言的, 對於那些許多很小型的資料表、很少的資料、很簡單的工作, 實在沒有什麼能比上述情境更方便處理了!
2013/8/27
在單元測試程式中取得 Connection 字串
這是一個相當古老的問題。不過, 似乎也很久沒遇到過了。當今天再度遇到時, 突然被嚇了一跳。問題是這樣的, 當我們建立單元測試專案時, 如果你看到測試不成功的原因是什麼「System.ArgumentException: 此處不允許應用程式相對虛擬路徑 '~/'」之類莫名其妙的錯誤的話, 大概就是依照以下解法就對了。
2013/7/18
[SQL] 將關聯資料彙整成單一欄位並傳回的小技巧
今天在設計 Master-Detail 顯示畫面時, 面對煩雜的關聯資料, 一時突發奇想, 然後隨口問了公司的 DBA 老大, 想請教他有沒有什麼想法, 結果竟然有解法, 而且異常的簡單! 所以就有了這一篇文章的出現。(順便說一下, 對一個沒有時間去鑽研資料庫的開發人員而言, 公司裡有位 DBA 是件蠻幸福的事情)
2013/7/11
在 VS2013 Preview 中使用 Scaffolding 快速建立 CRUD 網頁
在 VS2013 Preview 中, 我們可以透過它的 Scaffolding (支架) 功能在 MVC 專案中快速建立一整套的 CRUD 網頁, 不用寫一行程式碼。甚至, 它已經內建了 Bootstrap 框架, 這使得我們甚至不需要具備美工能力, 也能設計出比以前漂亮得多的網頁。
在 Visual Studio 建立資料庫專案
我從很久以前就對 Visual Studio 中新加入的資料庫專案範本感到很有興趣; 但是一來我並不熟資料庫, 二來工作上也用不到, 所以從來沒有真正較深入地研究它, 只有嘗試過建立幾個測試專案, 然後被搞得灰頭土臉之後, 被迫放棄。但是最近由於工作上突然有了一點變化, 讓我回頭來思考在原來的方案中加入一個資料庫專案的想法, 所以就重新把它又拿來研究一番。
2010/1/25
[SQL] 使用 Stored Procedure 動態組成 SQL 查詢指令
以下示範一個可以動態組成查詢子句的 SQL 指令, 以 MS SQL 的 Stored Procedure 寫成。其中, 如果任一個參數(或全部)傳入 NULL 值, 即代表不限制那個欄位的條件。
2010/1/18
[ADO.NET] 動態 SQL 指令與 SqlDataSource 的 QueryStringParameter 配合查詢
我在「[SQL] 使用 Stored Procedure 動態組成 SQL 查詢指令 」一文中介紹了如何在 Stored Procedure 中動態的組合出 SQL 指令並進行查詢。然而, 如果我們要配合 SqlDataSource 中以進行查詢, 該怎麼做呢?
2009/9/22
[XML] XML入門系列 (3) : 巡覽 XML 文件
在本節中我將介紹對於 XML 資料最重要也最常用的技巧, 也就是所謂的巡覽 (navigation)。我所說的巡覽至少包括兩個部份, 一是定位/搜尋想要找的節點和資料, 二是在樹狀結構資料中以一個節點一個節點的方式向前或向後巡迴停駐。
在本文中, 我仍將採用在上文中所建立的簡單 XML 資料以做為範例:
[XML] XML入門系列 (2) : 以動態方式建立或產生 XML 文件
在本文中我將示範以不同的方式從無到有的建立一份 XML 文件。
使用 XmlDocument 物件
首先, 我們可以使用 XmlDocument 物件來一個節點一個節點的建立起 XML, 如下例:
[DataTable] .NET DataTable 詳論 (含相關主題)
DataTable 是 ADO.NET 的核心物件。如果你想學好 ADO.NET, 你絕對避免不了接觸到 DataTable。如果你過去曾經透過網路上的片段知識學到了你以為足夠的 ADO.NET 知識, 卻對以 DataTable 為始的基礎概念沒有深刻的認識, 那麼我建議你下一些苦工, 就從這一篇文章開始, 重新把底子建好。
在這裡, 我必須假設你對資料庫的基本知識已經有了清楚的認識, 否則你應該回頭先去讀讀這方面的書籍。相反的, 如果你已經對資料庫原理瞭若指掌, 那麼你一定對以下的內容感覺到異常的容易。因為 DataTable 本身幾乎就是資料庫裡面 Data Table 在記憶體中的翻版, 如果你懂資料庫, 你對 DataTable 絕對沒有任何難以理解之處。
離線式資料操作 (Disconnected Data Operation)
2009/9/1
[入門][XML] XML入門系列 (1) : XML 初論
XML 在 .Net 中大概算是最重要而基本的技術之一。我將花一點時間從頭將 XML 以白話解釋一遍, 再把讀寫 XML 資料的相關技巧整理成一系列文章。
首先, 我們先來看一個完整且合法的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<rss version="1.0">
<channel>
<title>Johnny Worker's Blog</title>
<link>http://feeds.feedburner.com/jworker</link>
<description>
Johnny is a Microsoft MVP who's familiar with ASP.NET / VB.NET and C#.
</description>
<language>en</language>
<image>
<link>http://feeds.feedburner.com/jworker</link>
<url>http://s.blog.xuite.net/_image/logo_blog.gif</url>
<title>HiNet Blog</title>
</image>
<item>
<title>[AJAX] 使用 PageMethods 從 JavaScript 中直接呼叫 Server 端函數</title>
<link>http://feeds.feedburner.com/~r/Jworker/~3/375404303/19043851</link>
<pubDate>Tue, 26 Aug 2008 10:57:52 -0500</pubDate>
<guid isPermaLink="false">http://blog.xuite.net/johnnyle/worker/19043851</guid>
<description>
如果我們在 ScriptManager 中設定 EnablePageMethods 屬性,
而且在 Server 端某個方法上...
</description>
</item>
<item>
<title>MSDN 的 Transfer Manager 哪裡找?</title>
<link>http://feeds.feedburner.com/~r/Jworker/~3/369845030/18764090</link>
<pubDate>Wed, 20 Aug 2008 04:43:22 -0500</pubDate>
<guid isPermaLink="false">http://blog.xuite.net/johnnyle/worker/19043851</guid>
<description>
如果你是 MSDN 的訂閱者, 你一定知道 MSDN 的下載一律是透過
Microsoft File Transfer Manager 進行的...
</description>
</item>
<item>
..... (省略)
</channel>
</rss>