EF Core 筆記 2 - Model 設計
Model 是 Entity Framework 運作的核心,EF Core 提供兩種建立 Model 做法:Code First 或逆向工程。 前者從程式需求出發設計及修改 Model,經由 Migration 機制生成建立及修改資料庫 Schema 指令,將資料庫變成我們想要的形狀。 逆向工程較... Read More
View Article程式範例 - 耗時匯出作業之檔案下載
同事提問,某報表匯出作業執行很耗時,長達數十秒到一分鐘,為避免使用者分不清作業是否在執行中陷入焦慮(或狂點滑鼠猛按 F5,你懂的), 打算在下載匯出檔過程顯示下載中動畫,但要如何在檔案下載完成時精準結束動畫是個問題。 這個需求用 AJAX 不難解決,當下我便提供了建議。不過,身為程式魔人光用嘴寫程式... Read More
View ArticleEF Core 筆記 3 - Model 關聯設計
Entity 間的關聯設計是 EF 應用的另一項重點。 Entity 關聯 先說一對多。以 Blog、Post 為例,關聯為一個 Blog 有很多篇 Post。 public class Blog { public int BlogId { get; set; } //Primary Ke... Read More
View Article直流風扇採購筆記
家裡的老電風扇疑似軸承卡住掛點,召喚無敵 WD40 登場還是回天乏術。 估計勉強修好仍有風險,輕則阻力變大增加耗電,重則卡住導致馬達過熱,感覺毛毛的,決定換新! 這幾年家裡的冷氣、電冰箱陸續換成直流變頻,而近幾年直流電扇也成為主流,價格跟傳統機械扇(交流電)相差不多,而耗電不到一半,估計現在已沒有不... Read More
View Article【水電工日記】計算機電池座維修
掌上型計算機字跡不清,在強光下才能勉強看見液晶數字及操作: 依據經驗,這是內部鈕扣電池沒電,只靠太陽能電池供電的典型症狀。 拆開外殼取出 LR41 電池,以三用電錶測量電壓為 1.52 V (LR41 標準電壓為 1.5V),判斷更換沒多久,電力還很充足。 【冷知識】鈕扣電池型號 LR41 的第一... Read More
View Article如何在 Batch 檔跨國別語系取得系統日期時間?
一個老掉牙問題 - 如何在 Batch 檔取得系統日期時間? 相關討論文很多,像保哥的這篇如何在 Batch 檔取得系統的日期、時間欄位 (第三版) 就介紹得有詳細,基本原理差不多是用 %date:~0,4% 從日期字串的第 0 個字元起取 4 個字元得到年... 等等。 不過,我在實測時遇上一個問... Read More
View ArticleEF Core 筆記 4 - 跨資料庫能力展示
前幾篇筆記提到 EF Core 主打 Code First 概念,講求先定義 Model 再自動產生資料表 Schema 的運作模式。 熟悉傳統資料庫程式開發方式的老鳥們看了猛搖頭:為什麼把事情搞到這麼複雜? 先定義 Schema 文件直接決定關聯建好資料庫,開發者照著規格寫程式不是比較簡單明瞭? ... Read More
View ArticleEF Core 筆記 5 - 淺談正式環境資料庫建立與換版
目前為止,筆記裡示範 EF Core Code First 都是先 dotnet ef migrations add InitialCreate 自動產生對映 Model 所需的資料表結構類別, 再透過 dotnet ef database update 帥氣地直接連上資料庫建立或更新資料表、Ind... Read More
View Article.NET 字串比對踩雷記
分享 .NET 老鳥前陣子犯下的低級錯誤 - 字串比對結果與預想不同,還因觀念不清迷惑好一陣子(羞)。 故事是這樣的,先前知道 Dapper 查詢所傳回的 dynamic 底層型別是 DapperRow,並可轉型成 IDcitionary<string, object>方便動態指定欄位處... Read More
View Article【茶包射手日記】連線網路磁碟機出現 2148073478 錯誤
同事遇到的案例,某台伺服器升級後,某支連接該主機網路磁碟機的固定排程出錯。手動測試以檔案總管無法連上伺服器,確認帳號密碼正確,但得到含糊的「An extended error has occurred./發生延伸錯誤。」訊息。再試了其他主機,使用相同帳號密碼連線網路磁碟並無問題。 改用net use... Read More
View ArticleC# 極短篇 - Reflection Invoke() 包含選擇性參數的方法
分享這幾天寫程式學到的 System.Reflection 小技巧一枚:使用 Type.GetMethod() 於執行期間取得類別的靜態方法,方法包含選擇性參數。以強型別呼叫,選擇性參數可省略不寫,.NET 會帶入預設值;但透過 MethodInfo.Invoke() 呼叫時,object[] 參數... Read More
View Article跟著微軟一起學 Python
我是在翻譯如何選擇程式語言?海報時才認識 Python 這個程式語言。 在我心中它取代當年 BASIC 語言的角色,語法單純易上手,格外適合非資訊相關領域但想或需要寫程式的人學習,Python 因此在科學研究與學術領域十分受歡迎,應用廣泛。 自己有多年 C# 開發經驗,面對一般程式需求,不論命令列工... Read More
View Article圓形綠燈到底可不可以左轉?
看到一則新聞,提到那種有紅、黃、左轉箭頭、綠四枚燈號的紅綠燈,圓形綠燈亮但左轉箭頭綠燈沒亮時,只要對向沒有來車,是可以左轉的。默默搞錯多年,特將此發現分享到專頁,收到 Derek 與 Lane 令人意外的回響 - 不準,警察照樣會開單。 為一探究竟,爬文查到該新聞在PTT 八卦版的討論,網友的回應卻... Read More
View Article【笨問題】C# 字串補空白與靠左右對齊
產生文字檔或顯示純文字時會蠻常遇到類似:呈現多欄資料,文字靠左,數字靠右,每一欄寬度固定,字串長度不足時補空白至指定寬度。(例如下面這個例子) 分享我以前的笨寫法 - 自己寫一個輸出固定長度字串的函數,傳入字串(或數值)、欄位寬度並指定左靠或右靠,函數負責補足空白: class Program {... Read More
View Article使用 C# 產生資料修改差異報告
最近寫到內容維護 UI,想留下資料修改軌跡。除了保留修改前修改後的完整內容,我還想出一份簡單的差異報告,指出哪幾行有更改,增加了哪幾行、哪幾行被刪除... 等,方便一眼看出變更重點;甚至不必保留舊版,用最新版加差異報告便能一路反推完整修改歷程,大量節省儲存空間。思考這個需求時,我想到 Git dif... Read More
View Article【茶包射手日記】Libman 無法解析 jsDelivr/UNPKG 套件
我目前開發網頁主要還是用 Visual Studio,採取 ASP.NET MVC cshtml 產生 HTML 主體並搭上 jQuery/Vue.js 處理 MVVM 的策略,力求專案架構簡潔,避免扯上 npm、webpack 等重量級工具(除非是要寫 SPA),走一種「輕前端風格」。 既然採行這... Read More
View Article輕前端札記 - HTML + JS 引用 CDN Vue.js 套件
我從 onclick/onselect 寫 JavaScript 開始寫動態網頁,經歷了 jQuery 盛世,陸續學過 Knockout.js/AngularJS MVVM,還玩過一點 TypeScript;從來前端開發演進如火箭升天,但我當了中輟生,沒再跟隨前端潮流前進。當今主流的前端開發加入許多... Read More
View Article【答客問】ASP.NET MVC ActionFilter 如何取得 RedirectToAction 路徑?
網友發問,ASP.NET MVC ActionFilter 可攔截檢查 MVC Action 執行結果,若 Action 傳回 return RedirectToAction("..."),ActionFilter 能否取得導向的 URL? 以下列程式為例,目標是在 TestAc... Read More
View Article閒聊 - 「好程式」跟你想的不一樣! 初讀「重構」有感
從事程式開發超過二十年,我一直不是開發方法論的信徒,對於 TDD、重構、Pair Programming 這些僅止於概略輪廓,不曾深入。不過,寫了超過一萬小時,對於程式該怎麼寫才漂亮,多少也發展出自己的心法,例如:抽取成方法重複利用或共用、將函數結果存成變數重複利用減少呼叫... 等等。不記得是怎麼... Read More
View Article重構筆記 - 壞味道 (Bad Smell)
由「好程式」跟你想的不一樣!一文,我們改知道重構是「提升程式碼的可讀性,寫出容易修改擴充的好程式」的有效手段,接下來,你得先知道什麼叫壞程式,才寫出好程式。 Kent Beck 用「壞味道』(Bad Smell,中譯本把它翻成程式異味,但我偏好最早聽 Ruddy 老師採用的翻譯 - 壞味道)傳神地形... Read More
View Article