Browse by Tags

惱人的Managed ODP.NET ConfigSection問題
自從學會 Managed ODP.NET ,它馬上成為我的奧林匹克指定資料庫元件。不用額外安裝Oracle Client,管它x86還是x64,只要在主機設好TNSNAMES.ORA(我慣用的做法是用%TNS_ADMIN%環境參數提供路徑,一台主機只要設一次,部署到不同主機時不需改config),用NuGet下載安裝好一切搞定,十分方便。比起傳統ODP.NET常常糾結於x84與x64與Oracle Client版號高低,Managed ODP.NET高雅先進,用過之後就回不去了。 不過,我常遇到一個小問題...
Posted 10 September 2016 05:49 AMJeffrey | with no comments 2,999
Filed under: ,
實作Equals()與==、!=運算子注意事項一則
在C#自訂物件型別,基於Referece Type特性,只有兩個變數指向同一物件,==或Equals()才會傳回true(如果對Reference Type跟Value Type間的差異感到模糊,可以來個 小測驗 自虐 釐清一番),而這常不待我們的期待。以股票代號物件為例,假設有個Ticker物件,將股票代號分為Symbol(ex: 2330)與Market(ex: TW)兩部分,另外有FullSymbol傳回2330.TW: public class Ticker { public string...
Posted 09 August 2016 11:10 PMJeffrey | 2 comment(s) 4,428
Filed under:
小技巧:在web.config加入多筆式設定
跟同事聊到如何在web.config加入多筆式設定。所謂多筆式設定,是指同性質設定可能有1到n筆並存,我常遇到的例子是偵錯用途或排除例外的對應設定,例如:將Windows登入帳號A對應成帳號B,部門C對應成部門D… 等等。這類設定,若筆數很多我通常會另外弄個Text或JSON保存,若筆數不多只有三五筆,我喜歡直接寫進config檔,比較乾淨俐落。 舉個實例,假設有個整合式驗證ASP.NET網站依登入帳號識別使用者身分,帳號manager具有管理權限。開發人員jeffrey臨時想模擬manager登入進行測試...
Posted 29 July 2016 07:23 AMJeffrey | with no comments 4,238
Filed under:
筆記:int?(Nullable<int>)運算與??運算子優先順序
同事回報某段C#程式發現Bug: int lastQty = 100; int ? soldQty = null ; int leaveQty = lastQty - soldQty ?? 0; soldQty 由其他系統傳入可能為 null,原本我的想法是遇到 soldQty==null 就視為0,此時 leaveQty 應等於 lastQty,但以上程式執行結果與預期不同,leaveQty == 0! 這枚Bug隱藏了兩項疑問: ?? 運算子(Operator)與加減乘除誰先誰後? int與null加減乘除時結果會是什麼...
Posted 14 July 2016 09:32 PMJeffrey | 2 comment(s) 5,381
Filed under:
跨平台一大步,.NET Core 1.0正式登場!
這幾天在我FB洗版的大消息,莫過於.NET Core 1.0跟ASP.NET Core 1.0(原先命名為ASP.NET 5)已正式發佈! Scott Hanselman 說 ,他加入微軟多年一直致力.NET與Open Source推廣,在15年後.NET Core 1.0推出的這一刻,終於攀上巔峰。 .NET Core讓C#走出Windows,正式登陸Mac、RedHat Enterprise Linux、Ubuntu Linux,支援C#、VB、F#,而整個.NET Core都Open Source並放在Github...
Posted 30 June 2016 07:06 AMJeffrey | 3 comment(s) 15,152
Filed under:
網頁內嵌JSON建立JS物件之日期轉換問題
題目讀來有點不知所云,用實例講解才會清楚。在ASP.NET MVC Controller端建立的物件,想在輸出View的同時轉成JavaScript端物件,最直覺的做法是將物件轉為JSON字串,再以Razor語法內嵌一段var dataItem = { "num_prop": 1234, "str_prop": "ABCD", "bool_prop": true }; JavaScript語法,直接建立JavaScript物件...
Posted 29 June 2016 12:22 AMJeffrey | with no comments 3,238
Filed under: ,
Dapper出現sql_variant is incompatible with ntext
有個古老資料庫,裡面還有NTEXT型別欄位(SQL 2005加入NVARCHAR(MAX)後,應該沒人想用TEXT/NTEXT了),用 Dapper 執行一段SQL更新NTEXT欄位,發生古怪錯誤。 指令如下: cn.Execute("UPDATE SomeTable SET NTextField = @data WHERE Id = 1", new { data = "…" }); 錯誤訊息為:sql_variant is incompatible with...
Posted 13 May 2016 08:05 AMJeffrey | with no comments 2,460
Filed under: ,
改良式GetCachableData可快取查詢函式
多年前發展過一種 可快取查詢 :呼叫GetCachableData函式時傳入Cache Key、查詢或產生資料Callback函式、Cache保留期限(或指定閒置未用多久自動清除)三個參數,GetCachableData會依「若Cache有資料就直接沿用;若Cache無資料則當場產生並存入Cache」原則聰明處理,從此不需操心何時該查資料何時用Cache,應用起來挺方便的。 using System; using System.Collections.Generic; using System.Linq;...
Posted 12 April 2016 09:14 PMJeffrey | with no comments 4,618
Filed under:
Visual Studio編譯小技巧:工具程式一檔搞定
我經常寫小工具程式,不用安裝程式,單一EXE檔隨Copy隨用是最理想的部署設計。不過,程式稍稍複雜就難免依功能屬性拆分多個專案,有時需用到跨專案的共享程式庫,至於引用Json.NET、Dapper、NLog等必備套件的情況更是普遍。例如以下專案,Tool為Console Application(EXE)專案,引用Model類別程式庫專案,還參考了Json.NET: 編譯後會產生三組組件檔:Tool.exe、Model.dll與Newtonsoft.Json.dll,得一起部署到客戶端才能正確執行...
Posted 06 April 2016 10:12 PMJeffrey | 12 comment(s) 16,509
Filed under:
我的.NET舊版相容情結
前陣子有篇文章提到微軟 中止.NET 4.0/4.5/4.5.1技術支援 ,結論是:1) Windows預設會自動升級到.NET 4.5.2,2) 用.NET 4.0/4.5/4.5.1寫的程式不需修改就可直接執行(僅有極少例外)。 很妙的是,每回建立新專案,我下意識總是挑選較低版本,例如:開.NET 4專案若沒用到async、await等.NET 4.5專屬特色,我會優先選.NET 4.0,心裡總覺得:萬一使用者的電腦的.NET版本比較舊,程式也能跑。 其實,依目前.NET的版本更新政策,使用者機器都該升級到...
Posted 24 February 2016 07:27 PMJeffrey | with no comments 5,006
Filed under:
蛤,微軟停止.NET 4.0/4.5/4.5.1的技術支援?會對我的系統造成影響嗎?
2016/1/12是個大日子,有 好幾項微軟產品 結束技術支援,包含: Windows 8 IE 8/9/10 (狂賀) .NET 4.0/4.5/4.5.1 生活周遭的Windows 8都已免費升級到Windows 8.1或Windows 10,受影響者應該有限。而官方停止支援舊版IE是好消息,以後可以大聲客戶說我們不支援IE 8/9/10,最後要不要支援是另一回事,但至少可以下巴抬高45度「好吧!看你可憐,我再幫你一次,下不為例哦~」,網頁開發者等這一天應該很久了… (謎:接洗謀摳零A代誌,快醒醒呀孩子...
Posted 13 January 2016 10:45 PMJeffrey | 2 comment(s) 9,206
Filed under:
AssemblyInformationVersion踩雷記
前幾天回答網友QOO提問,又多學會「 AssemblyFileVersion不支援自動跳號,未設定時會引用AssemblyVersion 」新知識,知道這些就夠了嗎?並沒有,今天又踩一雷,再獲冷知識一枚。 同事升級專案的Newtonsoft.Json.dll到7.0.1版,NuGet顯示版本為7.0.1版: 由於NuGet安裝時沒自動加入 bindingRedirect 設定,手動加入時為了找出newVersion的正確版號,參考了檔案資訊: 檔案版本是AssemblyFileVersion,那麼產品版本就是AssemblyVersion囉...
Posted 25 November 2015 09:19 PMJeffrey | with no comments 3,429
Filed under:
再談組件版本導向技巧與Copy Local屬性
組件版本相容是常見的.NET實務問題。用以下的解決方案舉例,假設有個 MyConApp Console Application參照 MyLib Class Library,兩個專案都用NuGet裝了Newtonsot.Json(Json.NET)組件,差別在MyConApp用的是Json.NET 7.0版,MyLib用的則是6.0版。 不意外地,因為Json.NET版本不同,將會出現版本相容錯誤: FileLoadException was unhandled 無法載入檔案或組件'Newtonsoft...
Posted 13 October 2015 06:37 AMJeffrey | with no comments 3,569
Filed under: ,
縮略字大小寫之惑:LINQHelper還是LinqHelper?
在.NET,舉凡變數、類別、命名空間名稱,若由多個英文字組成(例如:Temp Folder Name),大小寫有兩種規則可遵循: Pascal命名法 第一個字母及所有單字的第一個字母都用大寫,如TempFolderName Camel命名法 第一個字母取小寫,隨後串聯文字的第一個字母採大寫,如tempFolderName 至於何時該用Pascal何時Camel?我的記法是:區域變數、私有欄位屬性,以及方法參數用Camel,其餘用Pascal。 不過有個情況我一直沒搞清楚,當名稱中有一部分是英文縮寫時...
Posted 08 October 2015 09:04 AMJeffrey | 8 comment(s) 6,963
Filed under:
【茶包射手日記】CSHTML ViewBag無法使用擴充方法
在ASP.NET MVC裡定義了一個 擴充方法 (Extension Method),打算在CSHTML中使用:(以下擴充方法為脫褲子放屁,純屬示範,為String新増一個GetLength()方法傳回字串長度) namespace BBDPWeb.Models { public static class ExtMethodDemo { public static int GetLength( this string s) { return s.Length; } } } 在Action中,使用Title存入標題字串放入ViewBag...
Posted 01 October 2015 08:02 AMJeffrey | with no comments 3,238
Filed under: ,
更多文章 « 上一頁 - 下一頁 »

搜尋

Go

<May 2017>
SunMonTueWedThuFriSat
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication