成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linq調用SubmitChanges方法

開發 后端
這里介紹當Linq SubmitChanges方法時,LINQ to SQL會檢查已知對象的集合以確定新實例是否已附加到它們。如果已附加,這些新實例將添加到被跟蹤對象的集合。

Linq SubmitChanges方法計算要插入、更新或刪除的已修改對象的集,并執行相應命令以實現對數據庫的更改。

無論對象做了多少項更改,都只是在更改內存中的副本。并未對數據庫中的實際數據做任何更改。直到對DataContext顯式Linq SubmitChanges,所做的更改才會傳輸到服務器。調用時,DataContext會設法將我們所做的更改轉換為等效的SQL命令。我們也可以使用自己的自定義邏輯來重寫這些操作,但提交順序是由DataContext的一項稱作“更改處理器”的服務來協調的。事件的順序如下:
1. 當Linq SubmitChanges方法時,LINQ to SQL會檢查已知對象的集合以確定新實例是否已附加到它們。如果已附加,這些新實例將添加到被跟蹤對象的集合。
2. 所有具有掛起更改的對象將按照它們之間的依賴關系排序成一個對象序列。如果一個對象的更改依賴于其他對象,則這個對象將排在其依賴項之后。
3. 在即將傳輸任何實際更改時,LINQ to SQL會啟動一個事務來封裝由各條命令組成的系列。
4. 對對象的更改會逐個轉換為SQL命令,然后發送到服務器。

如果數據庫檢測到任何錯誤,都會造成提交進程停止并引發異常。將回滾對數據庫的所有更改,就像未進行過提交一樣。DataContext 仍具有所有更改的完整記錄。

下面代碼說明的是在數據庫中查詢CustomerID為ALFKI的顧客,然后修改其公司名稱,***次更新并Linq SubmitChanges方法,第二次更新了數據但并未Linq調用SubmitChanges方法。

  1. //查詢  
  2. Customer cust = db.Customers.First(c => c.CustomerID == "ALFKI");  
  3. //更新數據并調用SubmitChanges()方法  
  4. cust.CompanyName = "YJingLee's Blog";  
  5. db.SubmitChanges();  
  6. //更新數據沒有調用SubmitChanges()方法  
  7. cust.CompanyName = "http://lyj.cnblogs.com"

動態查詢

使用動態查詢,這個例子用CreateQuery()方法創建一個IQueryable類型表達式輸出查詢的語句。這里給個例子說明一下。有關動態查詢具體內容,下一篇介紹。

  1. var c1 = Expression.Parameter(typeof(Customer), "c");  
  2. PropertyInfo City = typeof(Customer).GetProperty("City");  
  3.  
  4. var pred = Expression.Lambda<Func<Customer, bool>>(  
  5. Expression.Equal(  
  6. Expression.Property(c1, City),  
  7. Expression.Constant("Seattle")  
  8. }  
  9. };  
  10. IQueryable custs = db.Customers;  
  11. Expression expr = Expression.Call(typeof(Queryable), "Where",  
  12. new Type[] { custs.ElementType }, custs.Expression, pred);  
  13. IQueryable<Customer> q = db.Customers.AsQueryable().  
  14. Provider.CreateQuery<Customer>(expr); 

Log屬性用于將SQL查詢或命令打印到TextReader。此方法對了解 LINQ to SQL 功能和調試特定的問題可能很有用。

下面的示例使用Log屬性在SQL代碼執行前在控制臺窗口中顯示此代碼。我們可以將此屬性與查詢、插入、更新和刪除命令一起使用。

  1. //關閉日志功能  
  2. //db.Log = null;  
  3. //使用日志功能:日志輸出到控制臺窗口  
  4. db.Log = Console.Out;  
  5. var q = from c in db.Customers  
  6. where c.City == "London"  
  7. select c;  
  8. //日志輸出到文件  
  9. StreamWriter sw = new StreamWriter(Server.MapPath("log.txt"), true);  
  10. db.Log = sw;  
  11. var q = from c in db.Customers  
  12. where c.City == "London"  
  13. select c;  
  14. sw.Close(); 

【編輯推薦】

  1. Linq結果集形狀概述
  2. Linq存儲過程返回詳解
  3. Linq調用LoadProducts方法
  4. Linq使用數據表簡單描述
  5. Linq對象引用簡單介紹
責任編輯:佚名 來源: IT168
相關推薦

2009-09-09 09:59:08

Linq調用LoadP

2009-09-08 15:39:13

Linq使用Inser

2009-09-17 11:32:52

LINQ調用存儲過程

2009-09-09 16:45:29

Linq調用數據訪問服

2009-09-15 11:08:01

LinQ調用存儲過程

2009-09-14 16:41:23

LINQ To XML

2009-09-15 16:44:44

Linq排序

2009-09-17 11:29:50

Linq擴展方法

2009-09-10 16:32:19

LINQ Where

2009-05-11 10:40:36

.NETLINQforeach

2009-09-11 10:20:36

Linq擴展方法

2010-06-03 08:55:43

LINQ

2009-09-10 09:35:25

Linq語句

2009-09-13 21:52:16

LINQ字符串

2009-09-17 08:47:00

Linq插入數據

2009-09-17 08:47:00

Linq查詢

2009-09-16 17:44:54

LINQ to SQL

2009-12-23 09:04:41

LINQ通用分頁

2009-08-27 13:10:54

LINQ from子句

2012-09-18 09:39:57

Linq項目高效
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 噜噜噜噜狠狠狠7777视频 | 成人精品一区二区 | 亚洲高清在线观看 | 精品少妇一区二区三区在线播放 | 精品成人免费一区二区在线播放 | 久久久噜噜噜久久中文字幕色伊伊 | 亚洲精品久久区二区三区蜜桃臀 | 欧美videosex性极品hd | 精品综合久久久 | 欧美1—12sexvideos | 超碰国产在线 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 国产精品久久久久久久久免费桃花 | 欧美a在线 | 午夜成人免费视频 | 成人免费区一区二区三区 | 国产一级黄色网 | 免费午夜视频在线观看 | 日本一道本视频 | 午夜专区 | 国产精品不卡一区 | 天天干人人| 嫩草视频在线看 | 欧美日韩亚洲二区 | 美女国内精品自产拍在线播放 | 97免费在线视频 | 精品亚洲一区二区三区 | 可以在线看的黄色网址 | 狠狠操狠狠操 | 久久久久久久一区 | 91传媒在线观看 | 日韩在线视频一区二区三区 | 国产欧美一区二区三区国产幕精品 | 亚洲 欧美 日韩 在线 | 在线激情视频 | 99re6在线| 丁香色婷婷| 午夜男人天堂 | 超碰网址 | 亚洲网站在线观看 | 亚洲网站在线观看 |