There are times when adding validation logic can't be done
purely by looking at individual insert/update/delete operations - and instead
you want to be able to look at the entire change list of operations that are
occurring for a transaction.
Starting with Beta2 of .NET 3.5, LINQ to SQL now enables you
to get access to this change list by calling the public
DataContext.GetChangeList() method. This will return back a ChangeList
object that exposes collections of each addition, removal and modification that
has been made.
One approach you can optionally employ for advanced
scenarios is to sub-class the DataContext class and override its SubmitChange()
method. You can then retrieve the ChangeList() for the update operation
and perform any custom validation you want prior to executing it:
Figure 17

The above scenario is a somewhat advanced one - but it is
nice to know that you always have the ability to drop-down and take advantage
of it if needed.