温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么实现LINQ to SQL删除行

发布时间:2021-11-24 09:27:33 来源:亿速云 阅读:234 作者:柒染 栏目:编程语言

这期内容当中小编将会给大家带来有关怎么实现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 号订单的详细信息,将这些订单详细信息标记为删除,然后将这些更改提交到数据库。

// Query the database for the rows to be deleted.  var deleteOrderDetails =  from details in db.OrderDetails  where details.OrderID == 11000  select details;   foreach (var detail in deleteOrderDetails)  {  db.OrderDetails.DeleteOnSubmit(detail);  }   try {  db.SubmitChanges();  }  catch (Exception e)  {  Console.WriteLine(e);  // Provide for exceptions.  }

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

实现LINQ to SQL删除行实例:

Northwnd db = new Northwnd(@"c:\northwnd.mdf");   db.Log = Console.Out;   // Specify order to be removed from database  int reqOrder = 10250;   // Fetch OrderDetails for requested order.  var ordDetailQuery =  from odq in db.OrderDetails  where odq.OrderID == reqOrder  select odq;   foreach (var selectedDetail in ordDetailQuery)  {  Console.WriteLine(selectedDetail.Product.ProductID);  db.OrderDetails.DeleteOnSubmit(selectedDetail);  }   // Display progress.  Console.WriteLine("detail section finished.");  Console.ReadLine();   // Determine from Detail collection whether parent exists.  if (ordDetailQuery.Any())  {  Console.WriteLine(  "The parent is presesnt in the Orders collection.");  // Fetch Order.  try {  var ordFetch =  (from ofetch in db.Orders   where ofetch.OrderID == reqOrder   select ofetch).First();  db.Orders.DeleteOnSubmit(ordFetch);  Console.WriteLine(  "{0} OrderID is marked for deletion.",   ordFetch.OrderID);  }  catch (Exception e)  {  Console.WriteLine(e.Message);  Console.ReadLine();  }  }  else {  Console.WriteLine(  "There was no parent in the Orders collection.");  }    // Display progress.  Console.WriteLine("Order section finished.");  Console.ReadLine();   try {  db.SubmitChanges();  }  catch (Exception e)  {  Console.WriteLine(e.Message);  Console.ReadLine();  }   // Display progress.  Console.WriteLine("Submit finished.");  Console.ReadLine();

上述就是小编为大家分享的怎么实现LINQ to SQL删除行了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI