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

Handling Simultaneous Changes with Optimistic Concurrency

One of the things that developers need to think about in multi-user database systems is how to handle simultaneous updates of the same data in the database.  For example, assume two users retrieve a product object within an application, and one of the users changes the ReorderLevel to 0 while the other changes it to 1.  If both users then attempt to save the product back to the database, the developer needs to decide how to handle the change conflicts. 

One approach is to just "let the last writer win" - which means that the first user's submitted value will be lost without the end-users realizing it.  This is usually considered a poor (and incorrect) application experience. 

Another approach which LINQ to SQL supports is to use an optimistic concurrency model - where LINQ to SQL will automatically detect if the original values in the database have been updated by someone else prior to the new values being persisted.  LINQ to SQL can then provide a conflict list of changed values to the developer and enable them to either reconcile the differences or provide the end-user of the application with UI to indicate what they want to-do. 

I'll cover how to use optimistic concurrency with LINQ to SQL in a future blog post.

View Entire Article

User Comments

Title: Good Article   
Name: Vishnu Shanmugam
Date: 2010-12-11 12:46:40 AM
Excellent article.
Title: very clear   
Name: tarun
Date: 2010-08-13 7:31:17 AM
thanks for the clear explanation
Title: this is terrible   
Name: mac
Date: 2010-08-02 4:56:22 PM
this is by far the worst display of CRUD i have seen yet.
Title: How can I insert dates   
Name: Ernie Smart
Date: 2010-03-17 1:08:05 PM
How can I parse or convert dates? Let's say I have a text box (txtDate) to enter the dates and the database has a field called OrderDate. If either of the follwoing two:
OrderDate = Convert.ToDateTime(txtDate)
OrderDate = DateTime.Parse(txtDate)
I get System.FormatException: String was not recognized as a valid DateTime error.
If I do OrderDate = DateTime.Now, the code executes correctly.
How can convert the date entered in the text box so the program will work?
Title: i can't find add,update or delete methods for my data context.   
Name: Enow Mbi
Date: 2010-02-19 11:10:15 AM
I can't figure out why i can't find,add,update or delete methods of my data context despite the fact that my table has a primary key.
Title: More Article   
Name: twinsf
Date: 2010-01-28 2:09:59 AM
thank youu for helpfull
Title: Bad advice   
Name: Simon
Date: 2008-12-28 11:59:06 PM
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: 2008-12-24 1:49:56 PM
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.

Title: Very helpful   
Name: Alexander
Date: 2008-11-13 9:20:30 PM
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: 2008-10-07 12:15:53 PM
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: 2008-07-23 12:27:59 AM
Excellent article, Well done, a really good read.
Title: Thanks a lot   
Name: Andi
Date: 2007-12-02 11:25:10 AM
Thank you for this great article!!!


©Copyright 1998-2019  |  Page Processed at 2019-05-22 7:36:33 PM  AspAlliance Recent Articles RSS Feed