LINQ to SQL (Part 4 - Updating our Database)
page 8 of 12
by Scott Guthrie
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 31547/ 492

Advanced: Looking at the Entire Change List for the Transaction

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.


View Entire Article

Article Feedback

Title:  
Name:  
Url: ( Optional )
Comment:  
Please add 2 and 5 and type the answer here:

User Comments

Title: Bad advice   
Name: Simon
Date: 12/28/2008 11:59:06 PM
Comment:
The partial class validation logic you demonstrate is not testable and is therefore useless to me. Isn't it better advice to put the validation logic in business objects (as Rocky Lhotka would urge). Or alternatively, to put it in a service layer or repository that is testable. Baking your validation logic into these proprietary, tightly coupled, LINQ DTOs seems wrong.
Title: Create items together   
Name: Tom
Date: 12/24/2008 1:49:56 PM
Comment:
Is there a way to create a category and product together? From what I've seen, beverages.Products would be null, so you can't call "Add" on it. You also can't set Products equal to a new EntitySet, because the setter assumes a non-null EntitySet already which it calls "Assign" on.

Thanks!
Title: Very helpful   
Name: Alexander
Date: 11/13/2008 9:20:30 PM
Comment:
Just great. Killed a few days with msdn stuff trying to comprehend logic of Entity Insert/Update/Delete customisatiton. Just got it from this article in a couple of minutes.
Thank you.
Title: Linq doesn't update   
Name: Moez Tounsi
Date: 10/7/2008 12:15:53 PM
Comment:
Following the example above, ling will add a new record with the new parameters.
We have to handle the deletion of the old element.
Title: Excellent   
Name: Wayne
Date: 7/23/2008 12:27:59 AM
Comment:
Excellent article, Well done, a really good read.
Title: Thanks a lot   
Name: Andi
Date: 12/2/2007 11:25:10 AM
Comment:
Thank you for this great article!!!






Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2009 ASPAlliance.com  |  Page Processed at 11/20/2009 9:11:52 PM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search