qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          步步學LINQ to SQL:使用LINQ檢索數據

           該系列教程描述了如何采用手動的方式映射你的對象類到數據表(而不是使用象SqlMetal這樣的自動化工具)以便能夠支持數據表之間的M:M關系和使用實體類的數據綁定。即使你選擇使用了自動生成類的工具,理解這一實現過程可以讓你更加方便地對你的應用程序加以擴展。

            第一篇:步步學LINQ to SQL:將類映射到數據庫

            一旦你將數據庫表映射到對應的類對象上并在DataContext中申明了到數據庫的映射關系,你就可以不需要使用一行數據庫代碼(SQL語句)訪問數據了。

            通過一個簡單的示例BookCatalog(強類型的DataContext)來說明,你可以通過使用在Authors,Books和 Categories中定義的集合從數據庫中訪問book,author和category。

            例如,要查找書的類別,你所要做的就是循還bookCatalog.Books對象并且LINQ會自動地查找數據庫(通過映射關系)并填充你使用的集合---使用Book類為要查找的每本書創建一個實例:

          BookCatalog bookCatalog = new BookCatalog( );
          foreach( Book book in bookCatalog.Books){
          string title = book.Title;
          decimal price = book.Price;
          }

            你也可以使用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)。

          posted on 2011-11-22 16:37 順其自然EVO 閱讀(256) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 博野县| 周至县| 讷河市| 兴山县| 孟州市| 土默特左旗| 原平市| 贵阳市| 诸城市| 江孜县| 山阳县| 顺平县| 凤阳县| 乐安县| 广水市| 来宾市| 石屏县| 龙里县| 江山市| 文登市| 韩城市| 梁河县| 平远县| 于都县| 怀仁县| 寻甸| 宜兰市| 淳化县| 义乌市| 华池县| 新野县| 湟中县| 尤溪县| 神木县| 盐城市| 遂溪县| 屏边| 怀仁县| 钦州市| 高碑店市| 永州市|