LINQ to SQL语句(12)之Delete和使用Attach

删除(Delete)1.简单形式

说明:调用DeleteOnSubmit方法即可。

OrderDetail orderDetail =
   db.OrderDetails.First
  (c => c.OrderID == 10255 && c.ProductID == 36);
db.OrderDetails.DeleteOnSubmit (orderDetail);
db.SubmitChanges();

语句描述:使用 DeleteOnSubmit方法从OrderDetail 表中删除OrderDetail对象。调用 SubmitChanges 将此删除保持到数据库。

2.一对多关系

说明:Order 与OrderDetail是一对多关系,首先DeleteOnSubmit其OrderDetail(多端),其次 DeleteOnSubmit其Order(一端)。因为一端是主键。

var orderDetails =
  from o in db.OrderDetails
  where o.Order.CustomerID == "WARTH" &&
   o.Order.EmployeeID == 3
  select o;
var order =
   (from o in db.Orders
   where o.CustomerID == "WARTH" && o.EmployeeID == 3
   select o).First();
foreach (OrderDetail od in orderDetails)
{
   db.OrderDetails.DeleteOnSubmit(od);
}
db.Orders.DeleteOnSubmit(order);
db.SubmitChanges();

语句描述语句描述:使用DeleteOnSubmit方法从Order 和Order Details表中删 除Order和Order Detail对象。首先从Order Details删除,然后从Orders删除。 调用SubmitChanges将此删除保持到数据库。

时间: 2024-10-06 07:46:41

LINQ to SQL语句(12)之Delete和使用Attach的相关文章

LINQ体验(9)——LINQ to SQL语句之Insert/Update/Delete操作

我们继续讲解LINQ to SQL语句,这篇我们来讨论Insert/Update/Delete操作 .这个在我们的程序中最为常用了.我们直接看例子. Insert/Update/Delete操作插入(Insert)1.简单形式 说明:new一个 对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges ()提交到数据库. NorthwindDataContext db = new NorthwindDataContext(); var newCustome

LINQ体验(8)—LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Pag

LINQ体验(8)-LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods 我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作 . Union All/Union/Intersect操作 适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不

LINQ体验(7)-LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains

我们继续讲解LINQ to SQL语句,这篇我们来讨论Group By/Having操作符和 Exists/In/Any/All/Contains操作符. Group By/Having操作符 适用 场景:分组数据,为我们查找数据缩小范围. 说明:分配并返回对传入 参数进行分组操作后的可枚举对象.分组:延迟 1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述:使用Group By

LINQ体验(5)——LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg

上一篇讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ to SQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects.LINQ to DataSets.LINQ to SQL.LINQ to Entities.LINQ to XML,但是相对来说LINQ to SQL在我们程序中使用最多,毕竟所 有的数据都要在数据库运行着各种操作.所以先来学习LINQ to SQL,其它的都差不多了,那么就从Select说起吧,这个在编写程序中也最为常

LINQ体验(12)——LINQ to SQL语句之对象标识和对象加载

对象标识 运行库中的对象具有唯一标识.引用同一对象的两个变量实际上 是引用此对象的同一实例.你更改一个变量后,可以通过另一个变量看到这些更 改. 关系数据库表中的行不具有唯一标识.由于每一行都具有唯一的主 键,因此任何两行都不会共用同一键值. 实际上,通常我们是将数据从数据库中提取出来放入另一层中,应用程序在该层对数据进行处理.这就是 LINQ to SQL 支持的模型.将数据作为行从数据库中提取出来时,你不期望表示 相同数据的两行实际上对应于相同的行实例.如果您查询特定客户两次,您将获 得两行

LINQ to SQL语句(14)之Null语义和DateTime

Null语义 说明:下面第一个例子说明查询ReportsToEmployee为null的雇 员.第二个例子使用Nullable<T>.HasValue查询雇员,其结果与第一个例 子相同.在第三个例子中,使用Nullable<T>.Value来返回 ReportsToEmployee不为null的雇员的ReportsTo的值. 1.Null 查找不 隶属于另一个雇员的所有雇员: var q = from e in db.Employees where e.ReportsToEmplo

LINQ to SQL语句(23)之动态查询

动态查询 有这样一个场景:应用程序可能会提供一个用户界面,用 户可以使用该用户界面指定一个或多个谓词来筛选数据.这种情况在编译时不知 道查询的细节,动态查询将十分有用. 在LINQ中,Lambda表达式是许多 标准查询运算符的基础,编译器创建lambda表达式以捕获基础查询方法(例如 Where.Select.Order By.Take While 以及其他方法)中定义的计算.表达式 目录树用于针对数据源的结构化查询,这些数据源实现IQueryable<T>. 例如,LINQ to SQL 提

LINQ to SQL语句(21)之用户定义函数

用户定义函数 我们可以在LINQ to SQL中使用用户定义函数.只要把 用户定义函数拖到O/R设计器中,LINQ to SQL自动使用FunctionAttribute属性 和ParameterAttribute属性(如果需要)将其函数指定为方法.这时,我们只需 简单调用即可. 在这里注意:使用用户定义函数的时候必须满足以下形 式之一,否则会出现InvalidOperationException异常情况. 具有正确映 射属性的方法调用的函数.这里使用FunctionAttribute属性和 P

LINQ to SQL语句(20)之存储过程

存储过程 在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中 怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的 几个存储过程来理解一下. 1.标量返回 在数据库中,有名为 Customers Count By Region的存储过程.该存储过程返回顾客所在 "WA"区域的数量. ALTER PROCEDURE [dbo]. [NonRowset] (@param1 NVARCHAR(15)) AS BEGIN SET NOCOUNT O