2009-03-16 17 views

Respuesta

5

No realmente bajo este formulario no.

Deberá seleccionar todas las entidades que coinciden con sus criterios, ampliar 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 manera de ejecutar consultas de ACTUALIZACIÓN directamente de la forma en que lo hace Linq To SQL).

+0

Justo lo que sospechaba, usaré un sproc – Drevak

+8

O podría ser capaz de utilizar esto: http://weblogs.asp.net/pwelter34/archive/2011/11/29/entity-framework-batch-update- and-future-queries.aspx – MutantNinjaCodeMonkey

+0

@MutantNinjaCodeMonkey ¡Buen paquete, gracias por compartir! –

3

Debería ser, simplemente será un poco más limitado en general.

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

debe producir SQL similares, se puede ver el perfilador para ver lo que realmente se está generando SQL, pero debe ser muy similar a su estado de cuenta.

+2

El SQL generado EF-es bastante diferente: dos sentencias SQL, que no son atómica. –

+0

+1 b/c usa núcleo EF. –

11

Utilice la función de actualización por lotes de la Entity Framework Extended Library, así:

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

MutantNinjaCodeMonkey mencionó esta biblioteca en un comentario sobre una respuesta diferente. Descubrí que la biblioteca encajaba tan bien que valió la pena llamar la atención en su propia respuesta por separado. –