¿Cómo puedo actualizar una sola propiedad de un registro sin recuperarlo primero? lo que pido en el contexto de Código EF Primera 4.1Actualizar una sola propiedad de un registro en Entity Framework Code First
dice que tengo una clase de usuario, la asignación a los usuarios de la tabla en la base de datos:
class User
{
public int Id {get;set;}
[Required]
public string Name {get;set;}
public DateTime LastActivity {get;set;}
...
}
Ahora quiero actualizar LastActivity de un usuario. Tengo identificación de usuario. Puedo hacerlo fácilmente consultando el registro del usuario, establezco un nuevo valor en LastActivity y luego llamo a SaveChanges(). Pero esto daría lugar a una consulta redundante.
Me muero usando el método Attach. Pero debido a que EF arroja una excepción de validación en Nombre si es nula, configuro Nombre a una cadena aleatoria (no se actualizará a DB). Pero esto no parece ser una solución elegante:
using (var entities = new MyEntities())
{
User u = new User {Id = id, Name="this wont be updated" };
entities.Users.Attach(u);
u.LastActivity = DateTime.Now;
entities.SaveChanges();
}
Estaría muy appriciate si alguien me puede proporcionar una mejor solución. Y perdónenme por cualquier error ya que esta es la primera vez que hago una pregunta sobre SO.
Estaba buscando una forma de desactivar la validación al guardar, pero no pude. Gracias por la solución. –
Este problema_se debe solucionar en EF 5. –
Me gustaría señalar que algo llamado comprobación de concurrencia podría causar una excepción de "0 filas actualizadas" porque agregará una marca en la cláusula where para hacer coincidir la columna rowversion. (que en mi caso fue nulo porque era un stub) – Slight