前面先後介紹了 Linq to Object 和 Linq to DataSet ,
介紹的也都還比較簡單,但是到這裡開始介紹 Linq to SQL ,
何為 Linq to SQL ,
簡單的說也就是幫你處理 Sql Server 資料庫的增刪改查的一種技術,
可以看做是 ADO.NET 的替代品,不過在完成上更加方便直接,
也不用像 ADO.NET 一樣天天拿著 SqlConnection 這些東西玩來玩去的,
而 Linq to SQL 則是構建於 ADO.NET 之上並且整合了連線池和事務處理的新技術,
實質上,在 Linq to SQL 於 SQL Server 資料庫進行操作時,
並不是全部由 Linq to SQL 來完成的,它們兩者之間還存在一個橋樑,
也就是“物件模型”,這個而物件模型的功能十分強大,
它要求完成和資料庫的溝通,查詢等等諸多功能,
物件模型本身和資料庫是對應的,實質上是和資料庫中的表相對應得,
當程式執行時,Linq to SQL 會轉化為物件模型的形式,
然後系統再把在物件模型內的程式執行對資料庫的各種操作,
而後資料庫便會將查詢結果返回給物件模型,
最後這個物件模型又會轉回到 Linq to SQL 中。
而對於物件模型的建立,又有三種方式,
其一是自己建立類來打造物件對映模型,
其二則是使用 VS 提供的視覺化設計器來自動生成物件對映模型(最主要的方式),
其三是使用命令列的 SQLMetal 工具來生成對映。
下面就先來介紹一下第一種方式,
自定義一個類來充當物件對映模型,通過這個自定義的類,
可以淺要的瞭解其視覺化工具在底層到底是做了怎麼一回事,
還是直接看 Demo
using System;
using System.Linq;
using System.Web.UI.WebControls;
using System.Data.Linq;
using System.Web.Configuration;
namespace CSharpLanguage
{
public partial class Demo__8 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string conStr = WebConfigurationManager.ConnectionStrings["Demo"].
ConnectionString;
//通過傳遞一個 資料庫連線字串 給 DataContext 物件,
//這樣就可以唯一的確定資料庫了
//也就是確定了資料表所在地
DataContext studentContext = new DataContext(conStr);
//然後便是通過 DataContext 物件的 GetTable<Student>()
//來完成對資料庫中資料表的獲取,並且獲取的型別是和
//Student 類一一對映的
//Table 是不能夠直接作為 GridView 的資料來源的
Table<Student> student = studentContext.GetTable<Student>();
var studentResult = from p in student
select new
{
p.身份證號碼,
p.性別,
p.學生姓名
};
GridView1.DataSource = studentResult;
GridView1.DataBind();
}
}
//必須使用 Table 中的 Name 屬性來指明在資料庫中
//將要進行資料操作的資料表的名字
//事實上,在這裡便是建立了物件對映
//通過這個 Student 類,來對映到資料庫中的資料表 "學生"
//並且通過 "Column" 定義多個欄位
//這些欄位都必須和資料表中的欄位名稱相對應
//因為只有這樣才能夠成功的完成從 Linq to SQL
//到 SQL Server 資料庫的一個成功的對映
[System.Data.Linq.Mapping.Table(Name = "學生")]
public class Student
{
[System.Data.Linq.Mapping.Column]
public string 身份證號碼;
[System.Data.Linq.Mapping.Column]
public string 學生姓名;
[System.Data.Linq.Mapping.Column]
public bool 性別;
}
}
結果為
從上面的 Demo 可以看出,
Linq to SQL 在執行過程中,是先通過一個物件對映 Student,
來和資料庫進行互動,然後再通過這個 Student 將查詢到的資料存在物件模型中,
最後通過 Linq 語句來操作這個物件模型,
然後將操作後的結果進行顯示即 OK。
2010—2—01