91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LINQ to SQL是如何怎樣進行刪除數據的

發布時間:2021-11-24 09:25:09 來源:億速云 閱讀:237 作者:柒染 欄目:編程語言

LINQ to SQL是如何怎樣進行刪除數據的,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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

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

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

NorthwindDataContext ctx = new NorthwindDataContext();   Customer test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");   ctx.Customers.Remove(test1);   ctx.SubmitChanges();

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

NorthwindDataContext ctx = new NorthwindDataContext();  Customer test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");  ctx.Customers.Remove(test1);  ctx.SubmitChanges();   test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");  Console.WriteLine(test1.CustomerID);

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

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

NorthwindDataContext ctx = new NorthwindDataContext();  Customer test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");   Order order1 = test1.Orders.Single(o => o.ShipCity == "Shanghai");  test1.Orders.Remove(order1);   ctx.SubmitChanges();

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

ctx.Orders.Remove(order1);   ctx.SubmitChanges();

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

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

NorthwindDataContext ctx = new NorthwindDataContext();  Customer test1 = ctx.Customers.Single(c => c.CustomerID == "TEST1");   foreach (Order o in test1.Orders)  {  test1.Orders.Remove(o);  ctx.Orders.Remove(o);  }  ctx.Customers.Remove(test1);   ctx.SubmitChanges();

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

關于LINQ to SQL是如何怎樣進行刪除數據的問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安顺市| 巴东县| 沾化县| 望城县| 威信县| 东丽区| 杭锦后旗| 七台河市| 芦溪县| 南靖县| 洪洞县| 缙云县| 阜新市| 崇文区| 东兴市| 微山县| 榆树市| 贵州省| 齐齐哈尔市| 万源市| 安仁县| 双城市| 梧州市| 礼泉县| 调兵山市| 万盛区| 南涧| 绩溪县| 苍梧县| 兴文县| 长治县| 海兴县| 湖口县| 临海市| 许昌市| 南乐县| 松阳县| 灵石县| 湄潭县| 湘阴县| 岫岩|