LINQ TO SQL
一、LINQ TO SQL概述
LINQ TO SQL最重要的一個功能就是爲數據庫創建一個對象模型(由基於.NET框架的類組成),並將該對象模型映射到數據庫中的相應對象。
LINQ TO SQL 對象模型的基本元素 | SQL Server數據庫中的對象 |
實力類 | 表 |
屬性或字段 | 列 |
關聯 | 外鍵關係 |
方法 | 存儲過程和函數 |
二、數據上下文
1.DataContext概述
DataContext又稱數據上下文,它爲LINQ TO SQL 提供操作數據庫的入口。使用LINQ TO SQL 操作數據庫,首先需要爲該數據庫創建一個繼承自DataContext類的自定義的數據上下文類。
DataContext類能夠通過數據庫連接或連接字符串來映射數據庫中的所有實體的源,並跟蹤和標識用戶對數據庫的更改。用戶可以調用其SubmitChanges()方法。
2.DataContext類的屬性
1.連接屬性Connection
Connection屬性可以獲取DataContext類的實例的連接。值得注意的是,用戶獲取該屬性的值之後,該連接對象的默認狀態是關閉的。因此,用戶如果使用該連接對象,則需要顯式打開該連接對象的狀態。
2.事務屬性 Transaction
Transaction屬性爲DataContext類的實例設置訪問數據庫的事務。其中,LINQ TO SQL支持以下三種事務。
(1)顯式事務。(2)隱式事務。(3)顯式可分發事務。
3.執行命令的最大時間屬性CommandTimeout
CommandTimeout屬性可以設置或獲取DataContext類的實例的查詢數據庫操作的超時期限。該時間的單位爲秒,默認值爲30秒。有時,查詢數據庫操作可能需要很長的時間。此時,則需要增大該屬性的值,以保證查詢數據庫的操作能夠完成。
三、DataContext類的方法
1.執行SQL命令的ExecuteCommand()方法
ExecuteCommand()方法能夠執行指定的SQL語句,並通過該SQL語句來操作數據庫。ExecuteCommand()方法返回一個整數值,即該SQL語句影響記錄的數量。
先創建實例,創建被執行的SQL語句,調用方法執行語句,顯示方法執行的結果,即被修改記錄的數量。
protected void btnCommand_Click(object sender, EventArgs e)
{
LinqDBDataContext DB = new LinqDBDataContext();
string strSql = "update userinfo set username={0} where id=7";
int result = DB.ExecuteCommand(strSql, "花無缺");
Response.Write(result + "條數據受影響");
}
2.執行SQL查詢的ExecuteQuery()方法
ExecuteQuery()方法可以執行指定的SQL查詢語句,並通過SQL查詢語句檢索數據,查詢結果保存數據類型爲IEnumerable或IEnumerable<TResult>對象。
先創建實例,創建被執行的SQL語句,調用方法執行語句,查詢結果保存在result變量中,使用foreach語句顯示result變量中的信息。
protected void btnQuery_Click(object sender, EventArgs e)
{
LinqDBDataContext DB = new LinqDBDataContext();
string strSql = "select top 5 * from userinfo";
var users = DB.ExecuteQuery<UserInfo>(strSql);
foreach (var user in users)
{
Response.Write("用戶暱稱:" + user.Username + "<br />");
}
}
3.提交更改到數據庫的SubmitChanges()方法
SubmitChanges()方法能夠計算要插入、更新或刪除已修改對象的集,並執行相應的修改提交到數據庫,並修改數據庫。
4.獲取表集合的GetTable()方法
GetTable()方法能夠獲取DataContext類的實例的表的集合。
5.獲取已修改對象的GetChangeSet()方法
GetChangeSet()方法能夠獲取被修改的對象,它返回由三個只讀集合組成的對象。它的返回值的類型爲ChangeSet。
Deletes屬性,已從ChangeSet中刪除的實體。
Insert屬性,已插入到ChangeSet中的實體。
Updates屬性,已在ChangeSet中更新的實體。