¿Hay una mejor manera de formular esta actualización de Entity Framework 4?

Tengo el siguiente código:

List<Item> csItems = (from i in context.Items
                      where i.CSItem == true
                      select i).ToList<Item>();
csItems.ForEach(i => i.Active = false);
context.SaveChanges();

Parece que esto es terriblemente ineficiente ya que primero tengo que leer la tabla completa y luego actualizar las tablas. ¿Hay una mejor manera de hacer esto para que solo esté haciendo una actualización sin leer todo?

preguntado el 22 de mayo de 12 a las 20:05

2 Respuestas

Linq2EF no tiene una actualización masiva incorporada, pero puede usar Alex James, artículos y publicaciones para hacerlo usted mismo, en realidad debe implementarlo usted mismo. También una forma simple es usar procedimientos almacenados. Pero si quiere tenerlo usted mismo, puede leer la serie de 4 artículos, son fáciles de leer.

contestado el 23 de mayo de 17 a las 12:05

No hay necesidad de construir el List<T> de los artículos Yo, personalmente, solo enumeraría los resultados y establecería los valores:

IQueryable<Item> csItems = (from i in context.Items
                  where i.CSItem == true
                  select i);
foreach(var item in csItems)
     item.Active = false;

context.SaveChanges();

Tenga en cuenta que no hay una funcionalidad de actualización masiva integrada con Entity Framework, por lo que hacer algo más eficiente requeriría alguna otra tecnica.

contestado el 23 de mayo de 17 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.