通过对相应的 Table<(Of <(TEntity>)>) 调用 DeleteOnSubmit(o),可以将被跟踪的对象 o 标记为删除。LINQ to SQL 将从 EntitySet<(Of <(TEntity>)>) 中移除对象视为更新操作,并且将对应的外键值设置为 null。不会将操作的目标 (o) 从其所在表中删除。例如,当通过将外键 ord.CustomerID 设置为 null 切断 cust 与 ord 之间的关系时,cust.Orders.DeleteOnSubmit(ord) 指示更新操作。它不会导致删除与 ord 对应的行。
将对象从其所在表中删除 (DeleteOnSubmit) 时,LINQ to SQL 执行以下处理:
您只能对由 DataContext 跟踪的对象调用 DeleteOnSubmit。对于 Untracked 对象,您必须先调用 Attach,再调用 DeleteOnSubmit。对 Untracked 对象调用 DeleteOnSubmit 会引发异常。
说明: |
|---|
| 从表中移除对象使得 LINQ to SQL 在 SubmitChanges 时生成对应的 SQL DELETE 命令。此操作不会从缓存中移除该对象或将删除操作传播到相关对象。 若要回收已删除对象的 id,请使用新的 DataContext 实例。若要清理相关对象,可以使用数据库的级联删除功能,否则需手动删除相关对象。 无需按任何特殊顺序删除相关对象(与在数据库中进行删除不同)。 |