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

LINQ to SQL刪除實現淺析

開發 后端
關于LINQ to SQL刪除的學習是我們掌握Linq to SQL操作的重要部分,那么我們在了解LINQ to SQL查詢添加更新之后那么就要認識LINQ to SQL刪除的執行了,這里向你介紹具體的內容。

我們在學習了LINQ to SQL之查詢以及添加和更新的實現之后,現在我們來看看,LINQ to SQL是如何怎樣進行刪除數據的,具體的實現過程和步驟是什么呢?讓我們來看看。

LINQ to SQL刪除數據以Northwind為例子:

1、首先以Customers表的一行數據為例,來實現LINQ to SQL刪除:

  1. NorthwindDataContext ctx = new NorthwindDataContext();  
  2.  
  3. Customer test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");  
  4.  
  5. ctx.Customers.Remove(test1);  
  6.  
  7. ctx.SubmitChanges();  

2、通過查看數據庫中的Customers表,可以發現該條數據已經被刪除了。

  1. NorthwindDataContext ctx = new NorthwindDataContext();  
  2. Customer test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");  
  3. ctx.Customers.Remove(test1);  
  4. ctx.SubmitChanges();  
  5.  
  6. test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");  
  7. Console.WriteLine(test1.CustomerID);  

先刪除CustomerID為"TEST1"的一行數據,然后再在數據庫中查詢該條數據,理論上來說數據庫中該數據已經不存在了,查詢出來應該沒有結果。可是屏幕輸出為"TEST1",這是已經被刪除的Customer的CustomerID。是不是會讓人覺得奇怪,數據庫中數據已經不存在了,但是查詢還是可以得到正確的結果。其實原因也很簡單,雖然在數據庫中該數據已經被刪除,但是在DataContext中的Identity Cache還保存著對該對象的引用(什么是Identity Cache,前文已經解釋過了),查詢出來的結果是在DataContext中Cache著的對象而不是存在于數據庫中的。可以知道如果在另一個DataContext中查詢該數據,肯定是查詢不到的。

3、LINQ to SQL刪除中的級聯刪除,以Customers和Orders為例:

  1. NorthwindDataContext ctx = new NorthwindDataContext();  
  2. Customer test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");  
  3.  
  4. Order order1 = test1.Orders.Single(o => o.ShipCity == "Shanghai");  
  5. test1.Orders.Remove(order1);  
  6.  
  7. ctx.SubmitChanges();  

在該示例中,欲刪除CustomerID為"TEST1"的Customer的訂單中ShipCity為上海的訂單。執行這段代碼,通過SQL Profile可以發現,并沒有運行delete from Orders...的SQL語句而是update,只是把Orders表中那條記錄的CustomerID設置為NULL,刪除的是該記錄與Customer的關系而并沒有真正刪除這條記錄。要想真正刪除該記錄必須通過DataContext來操作:

  1. ctx.Orders.Remove(order1);  
  2.  
  3. ctx.SubmitChanges(); 

這是在刪除過程中值得注意的一個問題。

要刪除Customer以及相關的Order應該這樣來操作(也可以在數據庫中設置級聯刪除):

  1. NorthwindDataContext ctx = new NorthwindDataContext();  
  2. Customer test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");  
  3.  
  4. foreach (Order o in test1.Orders)  
  5. {  
  6. test1.Orders.Remove(o);  
  7. ctx.Orders.Remove(o);  
  8. }  
  9. ctx.Customers.Remove(test1);  
  10.  
  11. ctx.SubmitChanges();  

在數據刪除時也會遇到像數據更新一樣的沖突問題,解決方法基本相同這里就不多說了。

原文來自博客園:http://www.cnblogs.com/blusehuang/archive/2007/07/08/810485.html

關于LINQ to SQL刪除實現問題就向你介紹到這里,希望對你了解和學習實現LINQ to SQL刪除有所幫助。

【編輯推薦】

  1. LINQ to SQL Table淺談
  2. Linq語句問題的解決方法
  3. Ling to sql更新實體概述
  4. Linq實體繼承簡單描述
  5. Linq Library概述
責任編輯:仲衡 來源: 博客園
相關推薦

2009-09-10 18:02:23

LINQ to SQL

2009-09-16 17:11:35

LINQ To SQL

2009-09-14 13:17:51

LINQ to SQLLINQ to SQL

2009-09-14 10:12:11

LINQ to SQL

2009-09-17 17:34:23

linq to sql

2009-09-15 10:12:37

LINQ To SQL

2009-09-17 18:05:15

linq to sql

2009-09-14 19:20:22

LINQ TO SQL

2009-09-14 18:23:59

LINQ嵌套查詢

2009-09-10 10:09:46

LINQ to SQL

2009-09-14 16:29:39

LINQ嵌套

2009-09-14 19:14:51

LINQ動態查詢

2009-09-14 17:40:47

LINQ To SQL

2009-09-18 14:25:36

LINQ to SQL

2009-09-15 14:30:11

Linq連接

2009-09-17 08:47:00

Linq插入數據

2010-09-01 15:30:24

SQL刪除

2009-09-17 13:30:32

LINQ to XML

2009-09-14 16:46:15

LINQ to XML

2009-09-07 16:44:28

Linq String
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久白浊 | 久久中文字幕一区 | 中文字幕日韩在线 | 亚洲最大的成人网 | 欧美一区二区三区在线观看视频 | 中文字幕日韩在线观看 | 日本三级日产三级国产三级 | 国产精品毛片无码 | 成年人在线视频 | 欧美一区在线看 | 免费成人在线网 | 婷婷丁香综合网 | 国产精品一区在线观看 | 91五月天 | 欧美lesbianxxxxhd视频社区 | 日本三级精品 | 国产精品视频一区二区三区不卡 | 污视频在线免费观看 | 国产精品一区二区视频 | 日韩一区二区av | 午夜影院在线观看视频 | 天天操夜夜爽 | 日产精品久久久一区二区福利 | 99亚洲精品 | 日韩在线精品 | 大象视频一区二区 | 日韩精品视频中文字幕 | 特级丰满少妇一级aaaa爱毛片 | 欧美精品一区二区蜜桃 | 欧美在线日韩 | 国产日韩久久 | 毛片高清 | 国产日韩欧美一区二区 | 国产精品久久久久久妇女6080 | 日韩一二区 | 久久一区二区三区四区 | 一级毛片高清 | 国产91久久久久久久免费 | 黄色毛片一级 | 亚洲精品视频一区 | 久久伊人免费视频 |