LINQ to SQL是LinQ架構下重要的子集,在LINQ Providers中,可以大致分為 :
- LINQ to Objects
- LINQ to XML
- LINQ to SQL
- LINQ to DataSets
現在我就示範如何去把Database轉成LINQ 上使用的Data Class。
我使用了SQL 2005的AdventureWorks Sample Database ,在Visual Studio中的Database Explorer加入資料連接 ,Right Click Project => Add New Item ,再選 [ LINQ to SQL Class ] ,之後就會新增一個dbml檔案。
我選用了Contact / Product / Customer / SalesOrderHeader / SalesOrderDetail 五個Table, 在Database Explorer 選取後,把它們Drag & Drop至中間的位置後,Visual Studio 便會自動建立Class至dbml檔案。
新增一個Form , 隨意加入一個DataGridView和兩個ComboBox後,建立一個BuildGrid的程序,輸入Code之後,已經可以做到基本的DataBinding了。(如下圖)
嚴格來說,只需要三行的程式碼就可以 :
DataClass.infodata1_DataContext dc = new LINQPlayer.DataClass.infodata1_DataContext(); var select = (from c in dc.Contact where c.ContactID != null select new { c.ContactID , c.NameStyle, Name = (c.Title + ' ' + c.FirstName + ' ' + c.MiddleName + ' ' + c.LastName), c.EmailAddress, c.Phone, c.ModifiedDate }).Take(Convert.ToInt32(cboTake.SelectedItem)).Skip(Convert.ToInt32(cboSkip.SelectedItem)); dgv1.DataSource = select;
不用如ADO.NET般建立SQL Connection ,因為在剛才建立的dbml檔案,內裡已經有Connection String,同時亦免除SQL Command, SQLDataReader 等等,因為當中的var select是Anonymous types , 具有直接存放Data Collection的能力。透過LinQ的Query Syntax,你可以使用屬於extension method,如[skip] , [take] 去做有條件性選擇。
作者 : 達Ming
最後更新 : 13-3-2008
原創文章 - 轉貼時請註明出處 : http://tatmingstudio.blogspot.com/2008/03/linq-linq-to-sql.html
(有錯請留言更正,多多指教)
沒有留言:
發佈留言