程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> LINQ TO SQL縱覽

LINQ TO SQL縱覽

編輯:關於.NET

1.LINQ和LINQ TO SQL

這是初學者經常模糊的一個概念。其實兩這個是不同。先來看LINQ。

一下引自MSND:http://msdn.microsoft.com/zh-cn/library/bb397926.aspx

語言集成查詢 (LINQ) 是 Visual Studio 2008 中的一組功能,可為 C# 和 Visual Basic 語言語法提供強大的查詢功能。LINQ 引入了標准的、易於學習的查詢和更新數據模式,可以對其技術進行擴展以支持幾乎任何類型的數據存儲。

通常我們應用程序要集成各種各樣的數據,因此我們要面對各種各樣的數據源,XML,數據庫(SQL Server,Access),內存集合數據(像List,Dataset等),文本文件等,但是我們面對不同的數據源要掌握不同的數據操縱技術(Ado.Net操作關系數據庫,XPath,XQuery操作XML,System.File操作文件),能不能以一種統一,標准的更面向對象的技術來操作這些不同的數據源?這就是LINQ初衷。LINQ體系如下:

LINQ 構架在.Net Framework上,你可以使用任何你擅長的Net平台語言使用LINQ,另外LINQ的高度可擴展性,只要實現了 IEnumerable<T>,都可以應有LINQ技術。

MSDN:LINQ to SQL 是 .NET Framework 3.5 版的一個組件,提供了用於將關系數據作為對象管理的運行時基礎結構 。

可以這樣理解,LINQ to SQL是LINQ體系的一部分,是個特定SQL Server數據庫的輕量級的ORM方案,以一種更加統一簡單的類SQL方式應用於對象模型和數據庫之間通信。LINQ To SQL體系如下:

2.ORM

上面提到,LINQ TO SQL可以理解為一個輕量級的OR/M方案,那麼什麼是ORM?ORM解決什麼問題?

ORM(通常也叫OR/M,O/RM, O/R Maping)是一種技術,解決軟件開發中關系數據庫和面對對象語言之間的阻抗失衡問題。 

3.C#3.0的幾個新特征

C#3.0有幾個新特征

a) 隱含類型局部變量

b) 擴展方法

c) 對象與集合初始化器

d) 匿名類型

e) Lambda表達式

g) 表達式樹,

f) 查詢表達式(LINQ)

我總是覺得C#其他新特征是為LINQ准備的,至少在LINQ技術中,到處看到他們影子。這幾個新特性必須掌握否則LINQ你只能學的一知辦解。

關於C#3.0語言新特征,你可以參看:

WebCast:C# 3.0 銳利體驗系列課程

4.LINQ TO SQL開發中對象模型的選擇

利用LINQ TO SQL開發,在建立對象模型有不同的選擇

(1) 利用對象關系設計器(O/R 設計器) 參見:http://msdn.microsoft.com/zh-cn/library/bb384428.aspx

(2) 利用SQLMetal 代碼生成工具,參見:http://msdn.microsoft.com/zh-cn/library/bb386987.aspx

(3) 自己手寫代碼

ORM不是空穴來風,通過他能能把對象持久化到數據庫,能把關系數據填充到對象,我們要去看下對象模型。對於第一種方式,設計器只是我們的手段,我們要的只是那個生成的代碼文(Northwind.desinger.cs)如下圖:

我們把這個文件內容拷貝到另外新加入類中來,軟後刪除這個Northwind.dbml,軟件照常編譯樣運行。仔細觀產這個Northwind.desinger.cs文件,注意表紅的部分,如下所示:

通過給類和公共屬性(property)施加屬性(attribute)來描述映射,實對象和關系數據庫之間建立關系。這種Maping方式也稱作侵入式,系統不是很靈活,對於Mapping的任何變動,系統需要重新編譯。

在看利用SQLMetal 代碼生成工具,一般我們用這個產生Code和map文件,然後把它加到項目當中,如下圖:

看下這個代碼產生文件,在類和屬性(property)施加屬性(attribute)不見了,通過單獨一個文件northwind.map來描述映射。而其這個文件也支持智能感知。

注意:如果你的開發環境沒有出現只能感知,是缺少Schema文件LinqToSqlMapping.xsd引起的,這是VS2008的一個Bug,請下載Visual studio 2008 SP1。

對於第三種方式,手工代碼的方式,就很明白了,如果你是在不喜歡ORM設計器的臃腫,有不喜歡SQLMetal工具不可控性,手工代碼不是為一種選擇,不過你可以輔助CodeSmith和mygeneration等工具解決。注意手工書寫的Mapping文件一定要通過Schema文件LinqToSqlMapping.xsd的驗證。

5.LINQ To SQL 的其他資源

對於技術,適合自己就好,LINQ不會消亡,也不要盲從LINQ TO SQL 將死,LINQ TO SQL VS 什麼類文章,如果你喜歡LINQ TO SQL的,下面這些資源供你參考:

微軟的LINQ 101 Sample:C:\Program Files\Microsoft Visual Studio 9.0\Samples\2052\CSharpSamples.zip這個絕對不能錯過。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved