2012-10-23 12:08 AM 1 45,343
ASP.NET Web API支援OData,可以藉由URL加註$filter、$orderby、$skip、$top參數,對資料進行條件篩選、排序、分頁等加工(關於ASP.NET Web API OData特性,可參見KKBruce的文章)。而要啟用OData,有項重要前題是回傳資料型別必須為I...
2012-09-02 03:57 PM 5 20,679
一開始,我只是為了某個Knockout程式範例,打算花十分鐘把3+2郵遞區號XML轉檔程式稍做整理,改寫成輸出3碼資料JSON而已,沒想到魔鬼都在細節裡,資料裡幾則特殊案例,搞得我手忙腳亂汗水直滴,最後花了一個半小時才達成目的,驗證傳說中"工程師預估的時程根本是放屁只能純參考"所言不虛... ...
2012-02-23 08:56 PM 2 12,318
自從經前輩醍糊灌頂,學會"未分配數量 * (權重 / 尚未分配權重總和)"一次到位的無尾差分贓演算法後,開心地用了好幾年,後來更演化出LINQ進化版,從此在.NET中要分贓算錢如虎添翼! 幾年下來,未曾得接獲於此演算法的缺點回饋,於是它在我心中一直維持完美無瑕的女神形象! 直到最近一個極端例子讓我...
2011-10-20 12:55 AM 13 53,224
對於長年與資料庫、SQL語法打交道的開發者來說,LINQ語法有無比的親切感! 當要在List<SomeClass>集合中找尋特定物件時,寫成 form o in SomeList where o.Col1 == "A" &&...
2011-06-29 06:18 AM 1 12,445
很久前曾寫過一篇範例,介紹將數字金額依不同權重拆成多筆的分贓程式寫法,最近專案又再度陷入算錢的漩渦,但局面有點改變。近一兩年被.NET 3.5/.NET 4寵壞了,已經有點"不用LINQ不會寫Code"的傾向,因此現在寫的帳務程式,就大量引用了List<SomeObject>的技巧處...
2010-09-22 07:29 AM 5 13,944
在Visual Studio中使用LINQ to SQL或EF時,拖拉資料庫產生Entity類別,VS會幫忙打理儲存連線字串。在小型ASP.NET專案裡,*.dbml被直接加入網站專案,VS就順理成章地在web.config <connectionStrings />中加入連線字串,...
2010-08-13 10:18 PM 4 7,965
今天在寫程式時,發現LINQ to SQL在管理物件上的特殊規則,做個筆記。 假設我們有一個Member資料表如下: 有一段程式,其中很取巧的用Member去承接ExecuteQuery的執行結果,前後取得四顆物件,放入一個List中: (在我的實際案例中,是SELECT另一個Table的不同欄...
2010-08-12 08:06 PM 6 76,645
同事今天問了一個LINQ下使用多條件比對產生LEFT JOIN的問題,讓我也學到了新東西,特地PO文備忘。 這回不寫程式,直接用威到不行的LINQPad做示範。 假想的題目是有個員工資料表Employee,Primary Key是DeptId及UserId,除了UserName,另有Subs...
2010-06-25 02:47 PM 7 14,008
上回提到LINQ to SQL兩段式更新時,經網友提醒有Attach()這個好東西,今天試了一下,結果發現它並不是我所原本想像的好東西,用起來得費一些手腳。 MVP Rick Strahl對這個議題有兩篇文章(1, 2)做了深入探討,因此細節我就不再贅述,但簡單歸納一下我的整理: Table...
2010-06-11 06:25 AM 6 19,761
一般而言,我們使用LINQ to SQL更新資料時,程序為: 建立DataContext 透過from o in ... where ... select o 取出某筆資料物件(例如: m) 設定新值,例如: m.Property = newValue DataContext....
2010-04-17 11:27 AM 3 13,217
最近在測試devart dotConnect for Oracle的LINQ to Oracle,發現應用在ASP.NET Web Site Project時,必須要完成一些部署步驟才能順利在另一台伺服器運作。我整理如下: 部署DLL有幾個選擇 :1) 在伺服器上執行dotConnect for...
2010-04-13 05:23 PM 4 13,925
來個LINQ to SQL機車考題。 有一SQL資料表如下: 請問,若不用DataContext.ExecuteQuery(),有無可能使用LINQ語法轉換出如下的SQL指令? SELECT COUNT(*) FROM Member WHERE RegTime < GETDATE() A...
2010-04-09 06:00 AM 5 24,939
依照資料庫的效能原則 -- 進行SELECT查詢時,應只選取必要欄位,選取欄位數愈少愈好。 以SELECT * FROM Attachment為例,假設資料有1萬筆,其中還有個Content欄位存放檔案的二進位內容,若平均檔案大小為1M,這個查詢動作將會引發10GB的磁碟機存取及網路傳輸量。如果我們...
2010-03-25 09:00 PM 0 10,772
今天意外發現,LINQ to SQL在轉譯CHAR(1)欄位比對時,可能因寫法不同而產生極無效率的SQL指令! 當資料表的欄位為CHAR(1)時,在DataContext裡產生的對應物件型別是char,而我們直覺上可能寫成CharCol == 'A'的比對條件。但今天發現一件可怕的事... Ch...
2010-03-17 11:11 AM 8 26,128
跟同事討論在新專案中開始採用LINQ,但有些古老元件的API只接受DataTable參數,我想到以前想過可以利用Reflection將LINQ查詢結果轉成DataTable,花了點時間,參考網路上的文章,整理成以下範例: using System;using System.Collection...
2009-11-13 08:11 PM 0 21,827
使用LINQ to SQL時,難免會遇到基於簡潔效率考量需要直接下SQL指令的場合。依我的習慣,遇到這類情境我就不用LINQ寫法硬幹了。DataContext物件提供了ExecuteCommand及ExecuteQuery兩個方法,可以直接撰寫有效率的SQL語法,交給DB執行批次更新動作或取回複合...