详解实现LINQ to SQL删除行

开发 后端
实现LINQ to SQL删除行是一个细节的问题,那么在执行LINQ to SQL删除行的操作的时候我们会遇到什么问题呢?那么本文就向你介绍详细的情况。

实现LINQ to SQL删除行是用到什么方法呢?具体的步骤又是什么呢?那么我们下面来具体看看在数据库中如何实现LINQ to SQL删除行的操作。希望对你了解和掌握这个技术有所帮助。

可以通过将对应的 LINQ to SQL对象从其与表相关的集合中删除来删除数据库中的行。LINQ to SQL 会将更改转换为相应的 SQL DELETE 命令。

实现LINQ to SQL删除行要注意的事项:

LINQ to SQL不支持且无法识别级联删除操作。如果要在对行有约束的表中删除行,则必须完成以下任务之一:

◆在数据库的外键约束中设置 ON DELETE CASCADE 规则。

◆使用自己的代码首先删除阻止删除父对象的子对象。

否则会引发异常。请参见本主题中后面的第二个代码示例。

实现LINQ to SQL删除行说明:

您可以重写 Insert、Update 和 Delete 数据库操作的 LINQ to SQL默认方法。有关更多信息,请参见 自定义插入、更新和删除操作 (LINQ to SQL)。使用 Visual Studio 的开发人员可以使用 对象关系设计器 来开发用于实现相同目的的存储过程。有关更多信息,请参见 对象关系设计器(O/R 设计器).以下步骤假定您已通过有效的 DataContext 连接到 Northwind 数据库。有关更多信息,请参见 如何:连接到数据库 (LINQ to SQL)。删除数据库中的行查询数据库中要删除的行。调用 DeleteOnSubmit 方法。将更改提交到数据库。

实现LINQ to SQL删除行实例:

这***个代码示例查询数据库中 11000 号订单的详细信息,将这些订单详细信息标记为删除,然后将这些更改提交到数据库。

  1. // Query the database for the rows to be deleted.  
  2. var deleteOrderDetails =  
  3. from details in db.OrderDetails  
  4. where details.OrderID == 11000  
  5. select details;  
  6.  
  7. foreach (var detail in deleteOrderDetails)  
  8. {  
  9. db.OrderDetails.DeleteOnSubmit(detail);  
  10. }  
  11.  
  12. try 
  13. {  
  14. db.SubmitChanges();  
  15. }  
  16. catch (Exception e)  
  17. {  
  18. Console.WriteLine(e);  
  19. // Provide for exceptions.  
  20. }  

在第二个示例中,目的是删除订单(10250 号)。代码首先检查 OrderDetails 表以查看要删除的订单是否有子项。如果订单有子项,则首先将子项标为删除,然后将订单标为删除。 DataContext 为实际删除设置正确的顺序,以使发送到数据库的删除命令遵守数据库约束。

实现LINQ to SQL删除行实例:

  1. Northwnd db = new Northwnd(@"c:\northwnd.mdf");  
  2.  
  3. db.Log = Console.Out;  
  4.  
  5. // Specify order to be removed from database  
  6. int reqOrder = 10250;  
  7.  
  8. // Fetch OrderDetails for requested order.  
  9. var ordDetailQuery =  
  10. from odq in db.OrderDetails  
  11. where odq.OrderID == reqOrder  
  12. select odq;  
  13.  
  14. foreach (var selectedDetail in ordDetailQuery)  
  15. {  
  16. Console.WriteLine(selectedDetail.Product.ProductID);  
  17. db.OrderDetails.DeleteOnSubmit(selectedDetail);  
  18. }  
  19.  
  20. // Display progress.  
  21. Console.WriteLine("detail section finished.");  
  22. Console.ReadLine();  
  23.  
  24. // Determine from Detail collection whether parent exists.  
  25. if (ordDetailQuery.Any())  
  26. {  
  27. Console.WriteLine(  
  28. "The parent is presesnt in the Orders collection.");  
  29. // Fetch Order.  
  30. try 
  31. {  
  32. var ordFetch =  
  33. (from ofetch in db.Orders  
  34.  where ofetch.OrderID == reqOrder  
  35.  select ofetch).First();  
  36. db.Orders.DeleteOnSubmit(ordFetch);  
  37. Console.WriteLine(  
  38. "{0} OrderID is marked for deletion.",  
  39.  ordFetch.OrderID);  
  40. }  
  41. catch (Exception e)  
  42. {  
  43. Console.WriteLine(e.Message);  
  44. Console.ReadLine();  
  45. }  
  46. }  
  47. else 
  48. {  
  49. Console.WriteLine(  
  50. "There was no parent in the Orders collection.");  
  51. }  
  52.  
  53.  
  54. // Display progress.  
  55. Console.WriteLine("Order section finished.");  
  56. Console.ReadLine();  
  57.  
  58. try 
  59. {  
  60. db.SubmitChanges();  
  61. }  
  62. catch (Exception e)  
  63. {  
  64. Console.WriteLine(e.Message);  
  65. Console.ReadLine();  
  66. }  
  67.  
  68. // Display progress.  
  69. Console.WriteLine("Submit finished.");  
  70. Console.ReadLine();  

实现LINQ to SQL删除行的操作基本内容就向你介绍到这里,希望对你了解和学习掌握实现LINQ to SQL删除行有所帮助。

【编辑推荐】

  1. Linq Library概述
  2. LINQ to SQL删除实现浅析
  3. LINQ to SQL删除实现体会小结
  4. LINQ删除记录的操作实现
  5. 实现LINQ删除数据的巧妙方法
责任编辑:仲衡 来源: MSDN
相关推荐

2010-09-01 15:30:24

SQL删除

2009-09-14 09:46:00

LINQ to SQL

2009-09-14 10:12:11

LINQ to SQL

2010-08-04 09:55:34

LINQ to SQL

2009-09-18 14:51:19

LINQ TO SQL

2009-09-14 10:29:02

LINQ删除记录

2009-04-20 15:54:04

SQL Server重复行

2010-06-17 09:30:44

LINQ to SQL

2010-01-18 09:55:30

VB.NET删除空白行

2009-09-14 10:45:33

LINQ删除数据

2009-04-02 10:37:52

通用基类SQLLINQ

2009-09-08 14:45:24

Linq to SQL支持SQL Serve

2009-09-14 16:12:57

LINQ删除记录

2009-09-08 17:27:18

LINQ to Dat

2010-09-01 16:47:18

SQL删除

2009-09-14 15:45:28

LINQ删除XML节点

2009-09-15 14:52:15

linq级联删除

2009-09-14 19:20:22

LINQ TO SQL

2009-09-18 13:23:27

Northwind对象LINQ to SQL

2009-09-10 10:37:15

LINQ to SQL
点赞
收藏

51CTO技术栈公众号