步步學LINQ to SQL 使用LINQ檢索資料

2021-09-30 22:36:34 字數 1888 閱讀 2012

該系列教程描述了如何採用手動的方式對映你的物件類到資料表(而不是使用象sqlmetal這樣的自動化工具)以便能夠支援資料表之間的m:m關係和使用實體類的資料繫結。即使你選擇使用了自動生成類的工具,理解這一實現過程可以讓你更加方便地對你的應用程式加以擴充套件。

第一篇:步步學linq tosql:將類對映到資料庫

一旦你將資料庫表對映到對應的類物件上並在datacontext中申明了到資料庫的對映關係,你就可以不需要使用一行資料庫**(sql語句)訪問資料了。

通過乙個簡單的示例bookcatalog(強型別的datacontext)來說明,你可以通過使用在authors,books和 categories中定義的集合從資料庫中訪問book,author和category。

例如,要查詢書的類別,你所要做的就是循還bookcatalog.books物件並且linq會自動地查詢資料庫(通過對映關係)並填充你使用的集合---使用book類為要查詢的每本書建立乙個例項:

bookcatalog bookcatalog = new bookcatalog( );

foreach( book book in bookcatalog.books)

你也可以使用linq來過濾這些結果集,因為大多數時候,你並不要一次返回所有的書或者基於效能方面的考慮也不會這麼做。

linq提供了一套完整的類似於sql語法的語言,該語言已經被整合到了.net語言(c#,visual basic)。對該語法的描述超出了本文的範圍,下面我們一起看兩個例子以了解它們是如何使用的。

因為bookcatalog返回乙個集合物件,我們使用的查詢語法將會查詢這些物件(意味著你將直接使用物件名以及它們包涵的字段或屬性而不是資料表的字段)。因此,例如,如果你僅僅想查詢**低於$30的書籍,你可以使用乙個linq where從句,該從句可以僅僅只從bookcatalog.books集合物件上查詢**低於$30的書:

ienumerable cheapbooks = from book in bookcatalog.books

where book.price.compareto( 30m ) < 0

select book;

linq的延期執行意味著對books集合的檢索不會即時從資料庫取得直到實際需要時才進行(例如,使用乙個foreach循還),因此我們可以保持應用的過濾條件,然後限制查詢的資料以確保讀取資料的效率。

例如,你以後可以使用linq提供的orderby語法來定義上面的結果集將資料按書的標題進行排序。

ienumerable sortedbooks = from book in cheapbooks

orderby book.title

select book;

現在,如果你在執行了linq查詢鏈之後通過sortedbooks執行循還,僅僅只會執行一次資料庫查詢。其結果仍然會返回**低於$30並且按照書的標題排序的所有書。

bookcatalog bookcatalog = new bookcatalog( );

ienumerable cheapbooks = from book in bookcatalog.books

where book.price.compareto( 30m ) < 0

select book;

ienumerable sortedbooks = from book in cheapbooks

orderby book.title

select book;

foreach( book book in sortedbooks )

現在我們一起看看如何對映物件之間的關係以便你能夠操作這些物件(例如book.author.name)。

步步學LINQ to SQL 將類對映到資料庫表

該系列教程描述了如何採用手動的方式對映你的物件類到資料表 而不是使用象sqlmetal這樣的自動化工具 以便能夠支援資料表之間的m m關係和使用實體類的資料繫結。即使你選擇使用了自動生成類的工具,理解這一實現過程可以讓你更加方便地對你的應用程式加以擴充套件。下面闡述本文的目標以及該示例程式為初級開發...

一步一步學Linq to sql

一步一步學linq to sql 一 預備知識 一步一步學linq to sql 二 datacontext與實體 一步一步學linq to sql 三 增刪改 一步一步學linq to sql 四 查詢句法 一步一步學linq to sql 五 儲存過程 一步一步學linq to sql 六 特性...

Linq To Sql常用方法使用總結

準備工作 資料表 table1 id int pk col1 varchar 50 col2 int table2 id int pk oid int fk remarks varchar 50 方法簡介 1.查詢 dbcontext dc new dbcontext 例項化linq to sql ...