Category: linq

今天在寫程式時,發現LINQ to SQL在管理物件上的特殊規則,做個筆記。 假設我們有一個Member資料表如下: 有一段程式,其中很取巧的用Member去承接ExecuteQuery的執行結果,前後取得四顆物件,放入一個List中: (在我的實際案例中,是SELECT另一個Table的不同欄...

同事今天問了一個LINQ下使用多條件比對產生LEFT JOIN的問題,讓我也學到了新東西,特地PO文備忘。 這回不寫程式,直接用威到不行的LINQPad做示範。 假想的題目是有個員工資料表Employee,Primary Key是DeptId及UserId,除了UserName,另有Subs...

上回提到LINQ to SQL兩段式更新時,經網友提醒有Attach()這個好東西,今天試了一下,結果發現它並不是我所原本想像的好東西,用起來得費一些手腳。 MVP Rick Strahl對這個議題有兩篇文章(1, 2)做了深入探討,因此細節我就不再贅述,但簡單歸納一下我的整理: Table...

一般而言,我們使用LINQ to SQL更新資料時,程序為: 建立DataContext 透過from o in ... where ... select o 取出某筆資料物件(例如: m) 設定新值,例如: m.Property = newValue DataContext....

最近在測試devart dotConnect for Oracle的LINQ to Oracle,發現應用在ASP.NET Web Site Project時,必須要完成一些部署步驟才能順利在另一台伺服器運作。我整理如下: 部署DLL有幾個選擇 :1) 在伺服器上執行dotConnect for...

來個LINQ to SQL機車考題。 有一SQL資料表如下: 請問,若不用DataContext.ExecuteQuery(),有無可能使用LINQ語法轉換出如下的SQL指令? SELECT COUNT(*) FROM Member WHERE RegTime < GETDATE() A...

依照資料庫的效能原則 -- 進行SELECT查詢時,應只選取必要欄位,選取欄位數愈少愈好。 以SELECT * FROM Attachment為例,假設資料有1萬筆,其中還有個Content欄位存放檔案的二進位內容,若平均檔案大小為1M,這個查詢動作將會引發10GB的磁碟機存取及網路傳輸量。如果我們...

今天意外發現,LINQ to SQL在轉譯CHAR(1)欄位比對時,可能因寫法不同而產生極無效率的SQL指令! 當資料表的欄位為CHAR(1)時,在DataContext裡產生的對應物件型別是char,而我們直覺上可能寫成CharCol == 'A'的比對條件。但今天發現一件可怕的事... Ch...

跟同事討論在新專案中開始採用LINQ,但有些古老元件的API只接受DataTable參數,我想到以前想過可以利用Reflection將LINQ查詢結果轉成DataTable,花了點時間,參考網路上的文章,整理成以下範例: using System;using System.Collection...

使用LINQ to SQL時,難免會遇到基於簡潔效率考量需要直接下SQL指令的場合。依我的習慣,遇到這類情境我就不用LINQ寫法硬幹了。DataContext物件提供了ExecuteCommand及ExecuteQuery兩個方法,可以直接撰寫有效率的SQL語法,交給DB執行批次更新動作或取回複合...

昨天的文章發表後,有兩位網友提到了DataContext是否要加using的議題。 我接觸LINQ to SQL是由Scott Gu的這幾篇文章開始入門的,在他的範例中沒有特別提到using,我也自始就忽略DataContext有實做IDispose這件事。雖然用using包住絕對有益無害(只...

上回針對Oracle使用LINQ做了一番評估,打算為Oracle相關專案導入LINQ預做暖身。無意發現除了Entity Framework外,還有另外的選擇---devart的LINQ to Oracle! 基於工作專案常偏向RAD性質,對我來說,LINQ to Oracle的輕巧優於EF的龐...

自從學會LINQ to SQL後,我就愛死那種忘記SqlConnection、丟掉SqlCommand、抛下SqlParameter的簡潔,乾乾淨淨幾行Code就搞定查詢、新增、修改、刪除的感覺。 無奈在公司,就算先撇開專案團隊成員是否已具備LINQ技能的問題,面對Oracle林立的工作專案環...

自從學會LINQ to SQL一行資料庫更新法,它便成為我專案裡常用的技巧。對於彈性要求較高、嚴謹性要求較低的複雜資料,我還喜歡借重SQL 2005起新增的XML資料型別作為儲存欄位。透過LINQ to SQL對應,Xml欄位會變成System.Xml.Linq.XElement Class,X...

我喜歡LINQ to SQL的簡潔,就拿更新資料庫某筆資料這件事來說,你可以忘記SqlConnection、丟掉SqlCommand、抛下SqlParameter,就搞定整個更新動作,對寫慣ADO.NET的人來說,實在是件不可思議的事。 像下面這個例子,寫一段LINQ配上Single()取得資...