Backend Development
淺談 C# Property (屬性) 語法糖與 NRT 機制演進 NEW
整理 C# Property 語法從 Backing Field 到 field 關鍵字的演進歷程,以及 NRT 機制在 init 與 required 語法補全後的實用性改善。
淺談 SQL Server 日期時間查詢與精度進位陷阱
探討 SQL Server 時間類型的精度差異(datetime vs datetime2),以及時間產生來源(DateTime.Now vs GETDATE())的選擇考量,並分析時間區間查詢中的進位陷阱。
RCSI 簡介與改良版 Entity Framework 鎖定提示攔截器
介紹 RCSI 與 NOLOCK 的差異,並提供基於 TagWith 的 EF Core 鎖定提示攔截器改良實作。
在 .NET 使用 MQTT:MQTTnet 與 Mosquitto 實作
介紹 MQTT 協定在 .NET 中的應用。教學包含使用 Docker 架設 Mosquitto Broker,以及使用 MQTTnet 套件實作 Publisher 與 Subscriber 的完整流程,適合 IoT 入門開發。
Excel 欄位寬度的隱藏陷阱
探討 NPOI 與 EPPlus 匯出 Excel 時,欄位寬度不一致的隱藏原因。發現 Excel 預設字型(Default Font)對欄寬計算的影響,並提供如何透過程式碼正確設定預設字型的解決方案。
淺談 throw 與 throw ex 的差異
解析 C# 中 `throw` 與 `throw ex` 的關鍵差異。強調 `throw` 能保留原始 Stack Trace,有助於除錯;而 `throw ex` 會重置堆疊資訊,應避免使用。
淺談 Entity Framework 中的預設值行為
探討 EF Core 對於資料庫預設值 (Default Value) 的處理邏輯。分析當 Entity 屬性為 `null` 時,EF 是忽略該欄位還是明確寫入 `null`,以及如何透過 `ValueGeneratedOnAdd` 設定正確行為。
EF Core Power Tools 介紹
介紹 Visual Studio 必備擴充套件 EF Core Power Tools。說明如何透過圖形化介面(GUI)進行反向工程(Reverse Engineering),支援 .NET 8 的 DateOnly/TimeOnly 型別對應,並解決 EF Core 原生指令操作繁瑣的問題。
Visual Studio 快速將 JSON 轉換為 C# 類別
介紹 Visual Studio 內建的「選擇性貼上 (Paste Special)」功能,能快速將 JSON 字串轉換為 C# 類別 (Class) 結構,並提醒在作為 DTO 使用時需注意屬性命名與型別驗證。
淺談 .NET 預設 Logger 及其優化技巧
介紹 .NET Core 內建 Logging 機制的 Log Level (Trace 到 Critical) 定義。分析 `WebApplication.CreateBuilder` 預設載入的 Logger Provider,並分享如何優化日誌記錄策略。
ASP.NET Core Web API 檔案上傳處理方式的實踐探討
探討後端處理 Web API 檔案上傳的兩種常見模式(Form vs Base64),並提出「上傳與業務邏輯分離」的推薦架構,以解決前後端協作痛點並提升 API 一致性。
在 .NET 專案中使用 Microsoft.Office.Interop.Excel 的常見問題
探討在 .NET 專案使用 Microsoft.Office.Interop.Excel 進行 ODS 轉檔時的常見問題,包括 `dotnet publish` 編譯錯誤 (MSB4803) 與 DCOM 權限不足 (0x80070005) 的排查解決方式。
在 ASP.NET Core Web API 中實現可選更新功能
探討 RESTful PATCH API 中如何區分「不更新欄位」與「更新為 null」。提出一種基於自定義 `OptionalValue<T>` struct 搭配 JsonConverter 與 ModelBinder 的解決方案,讓後端能精確判斷前端傳遞的有效欄位。
使用 CallerArgumentExpression 簡化參數檢核
介紹 C# 10 的 `[CallerArgumentExpression]` 屬性,說明如何將其應用於 `ExceptionUtils` 工具類,在拋出 ArgumentException 時自動擷取參數名稱,簡化參數檢核程式碼。
有關 .NET 技術文檔與命名規範的演變
觀察 .NET 技術生態的變遷,記錄 MSDN 轉型為 Microsoft Learn 的過程,以及 C# 命名規範 (如 Private Field 前綴 `_`) 在官方文件與 StyleCop 規則中的演變與差異。
淺談 C# 的 GetHashCode()
探討 C# `GetHashCode()` 的實作原則及其在 Dictionary 與 HashSet 中的作用。強調覆寫 `Equals()` 時必須同時覆寫 `GetHashCode()` 以避免雜湊碰撞或物件比對錯誤。
淺談 Entity Framework 中 SaveChanges() 的異常處理與狀態還原
整理 EF Core 常見例外 (DbUpdateException, DbUpdateConcurrencyException) 的處理方式。說明如何在發生錯誤時,透過 `Reload()` 或重置 Entity State 來還原 `ChangeTracker` 狀態,避免後續寫入受阻。
Entity Framework 中 DateTime 時區問題與解決方案
解決 Entity Framework 處理 `DateTime` 時區(UTC)的常見問題。探討 `DateTimeKind` 為 `Unspecified` 導致的時間偏差,並教學如何透過 `ValueConverter` 自動處理資料庫讀寫時的 UTC 時間轉換,確保前後端時間一致性。
淺談 Entity Framework 的導覽屬性與外鍵的同步更新
驗證 EF Core 中修改 Foreign Key (如 `MainId`) 是否會自動同步 Navigation Property (如 `Main` 物件),以及反之修改 Navigation Property 是否會同步 Foreign Key 的行為差異。
淺談處置模式模式和 using 陳述式
深入解析 .NET `IDisposable` 介面與 Dispose Pattern。說明 `using` 語法的底層運作原理,以及如何正確實作 Finalizer 以確保非託管資源 (Unmanaged Resources) 能被安全釋放。
