views:

40

answers:

1

I am having a hard time attempting to update a single field without having to retrieve the whole record prior to saving.

For example, in my web application I have an in place editor for the Name and Description fields of an object. Once you edit either field, it sends the new field (with the object's ID value) to the web server. What I want is the webserver to take that value and ID and only update the one field. There are only two ways google tells me to do this:

1) When I get the value I want to change, the value and the ID, retrieve the record from the database, update the field in the c# object, and then send it back to the server. I don't like this method because not only does it include a completely unnecessary database read call (which includes two tables due to the way my schema is).

2) Set UpdateCheck for all the fields (but the primary keys) to UpdateCheck.Never. This doesn't work for me (I think) due to my mapping layer between the Linq to Sql and my Entity/ViewModel layer. When I convert my entity into the linq to sql db object it seems to be updating those fields regardless of the UpdateCheck setting. This might be just because of integers, since not setting an int means it is a zero (and no, I can't use int? instead).

Are there any other options that I have?

+3  A: 

Yes, create a stored procedure to do this.

Will
You're going to be in this position with any ORM technology you use.
Dave Markle
Yep. Stored procedures is your only option left. It is in the nature of L2S to need the whole object in memory before being able to save it. However, I would only fall back to a stored procedure when retrieving the object first has an overhead that is too big. (as always, don’t optimize prematurely).
Steven