FOR JSON 語法是從 SQL Server 2016 開始支援,跟 FOR XML 一樣,我們可以將整筆記錄或是部分欄位輸出成 JSON 格式,輕鬆解決類別與類別之間一對一及一對多關係的情形,再搭配 Dapper 自定義 TypeHandler,讓關聯式資料庫的欄位與類別的對應轉換無聲無息。
[食譜好菜] 玩轉 SQL Server 的 FOR JSON
- 9030
- 0
- SQL Server
- 2018-10-15
FOR JSON 語法是從 SQL Server 2016 開始支援,跟 FOR XML 一樣,我們可以將整筆記錄或是部分欄位輸出成 JSON 格式,輕鬆解決類別與類別之間一對一及一對多關係的情形,再搭配 Dapper 自定義 TypeHandler,讓關聯式資料庫的欄位與類別的對應轉換無聲無息。
我們呼叫一個函式原則上以回傳一個結果為優,偶爾像 int.TryParse 使用 out 修飾詞,或是使用 Tuple 類別 來多吐一些結果,不過這些都不如將多個結果封裝成一個類別還來的合適,但是如果私有函式有回傳多個結果的需求,為此定義一個類別就顯得有些雞肋,除了要取一個適當的名字之外,還要定義它的存取限制,把它弄成 public 也不是,弄成 private 放在當前類別裡面又覺得「嘖...」。
如果是自架 IIS、SQL Server 伺服器,取得當前時間是看伺服器設定的時區在哪裡,就會拿到當地時區的當前時間,但是我們使用 Azure 提供的 PaaS 服務,只管用不必管伺服器,首要注意的是取得當下時間的 API 預設時區 UTC 的問題,務必在上雲之前針對自己的程式調整一番。
無論我們是要引用網站的資源,還是做重新導向,除非是外部的資源,不然使用相對路徑絕對是優選,在 ASP.NET 的世界裡面我們用來表達根目錄有人會用 /(Slash)
,有人會用 ~/(Tilde Slash)
,但它們兩個的差別在哪?
前幾天處理了一個檔案沒更新的問題,請看下圖:
這是一個 UNC 路徑,可以看到它路徑中間有兩個 \
,然後它就爆了。
會造成這樣的原因是因為在原始程式碼中,在兜路徑的時候沒有處理尾綴的 \
的數量,而使得尾綴的 \
多了或少了,路徑就失效了。
XPath 發佈已經快 20 年了,在 Lambda 運算式 出世之前想要選取 XML 節點,XPath 的語法是一定要去了解的,至今仍然還是有可能會遇到無法使用 Lambda 運算式的情況,例如:.NET Framework 2.0 的專案,底下列幾個我常遇到的需求範例。
這個雷我踩了不下三次,寫下來記錄一下,C# 程式要取得當前目錄的方法我們下關鍵字搜尋可以搜出一堆解決方案,沒意外的話第一個搜尋結果通常是 Directory.GetCurrentDirectory 方法(System.IO) - MSDN - Microsoft,但是這個方法在程式是由 Windows 工作排程器(Task Scheduler)啟動的狀況下就不 Work 了。
如果我們認真要用 ASP.NET MVC 做一個對外服務的網站,直接赤裸裸地爆黃白畫面在使用者面前,實在不是那麼優雅,如果從 Web.config 著手要自訂錯誤畫面的話,那麼 Google 到的答案大致就兩個方向:<system.web>/<customErrors>
及 <system.webServer>/<httpErrors>
。
Html.Action
、Html.RenderAction
、Html.Partial
、Html.RenderPartial
這四種方法都可以協助我們在 View 裡面渲染部分 HTML 內容,網路上針對這四種方式的差異說明大都著重在使用方式,但這次我們往下挖,看看這四種方式做了些什麼事?
上一篇文章提到依賴,依賴也無所不在,而 DIP 要我們將依賴做「反轉」,是要反轉什麼?反過來依賴嗎? 當然不是,而是解除直接依賴的關係轉而去依賴於抽象介面
,使得位於較低層次的類別依賴關係的方向反了過來,大致上看起來就會像這樣。