Question

Simple question, is it possible to achieve this query this with Entity Framework when updating one entity?

update test set value = value + 1 where id = 10
Was it helpful?

Solution

Not really under this form no.

You will have to select all entities that match your criteria, foreach over them and update them.

If you are looking for something that will do it right in the DB because your set could be huge, you will have to use SQL directly. (I don't remember if EF has a way to execute UPDATE queries directly the way Linq To SQL does).

OTHER TIPS

Use the Batch Update feature of the Entity Framework Extended Library, like this:

dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 });

It should be, it will just be a little bit more constrained generally.

var myEntity = context.First(item => item.id == 10);
myEntity.value += 1;
context.SaveChanges();

Should produce similar SQL, you can watch the profiler to see what SQL is actually being generated, but it should be very similar to your statement.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top