Declaración de actualización con Entity Framework
-
19-08-2019 - |
Pregunta
Pregunta simple, ¿es posible lograr esta consulta con Entity Framework al actualizar una entidad?
update test set value = value + 1 where id = 10
Solución
No realmente bajo este formulario no.
Tendrá que seleccionar todas las entidades que coincidan con sus criterios, predecirlas y actualizarlas.
Si está buscando algo que lo haga bien en la base de datos porque su conjunto podría ser enorme, tendrá que usar SQL directamente. (No recuerdo si EF tiene una forma de ejecutar consultas de ACTUALIZACIÓN directamente como lo hace Linq To SQL).
Otros consejos
Utilice la función de actualización por lotes de la Biblioteca ampliada de Entity Framework , de esta manera:
dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 });
Debería serlo, en general será un poco más limitado.
var myEntity = context.First(item => item.id == 10);
myEntity.value += 1;
context.SaveChanges();
Debería producir un SQL similar, puede ver el generador de perfiles para ver qué SQL se está generando realmente, pero debe ser muy similar a su declaración.