¿Cómo actualizar un objeto usando Entity Framework y EntityState.Modified no es por campo?
Con EF5 en NET 4.5, puede hacer esto: var entrada = contexto .Entry(obj);
entry.State = EntityState.Modified;
foreach (nombre var excluido)
{
entrada. En .NET 4.5, permite establecer una propiedad para una nueva función incluso si la propiedad ya estaba configurada para Modificar sin modificación. Cuando utilice .NET 4 en EF 4.3.1 o EF5, puede hacer esto: var entrada = contexto.Entrada(obj);
foreach (nombre de var en entrada.CurrentValues.PropertyNames.Except(excluido))
{
entry.Property(name).IsModified = true;
}
2. Sin embargo, puede marcar una propiedad como modificada: context.Entry(obj).Property(o =gt; o.Property3).IsModified = true;
context.Entry(obj).Property( o = gt; o.Property4).IsModified = true;
// etc.
Tenga en cuenta que una vez que marca el estado de toda la entidad como modificada, no se admite IsModified se establece en falso. Propiedad2;
context.Entry(objInDB).CurrentValues.SetValues(obj);
context.SaveChanges()
3. Gran respuesta, pero espero que alguien pueda proporcionar una.
Este código fue desarrollado para EF 4.3.1 // Debe importar/usar estos espacios de nombres
usando System.Data.Entity;
usando System.Data.Entity.Infrastructure <. /p>
//Actualiza las columnas especificadas del objeto de entidad, separadas por comas
//Este método supone que has abierto/inicializado el contexto
public static void Updatelt; (este contexto DbContext, T entidadObjeto, parámetros cadena[] propiedades) donde T: clase
{
contexto.Setlt ().Attach(entityObject) ;
var entrada = contexto.Entry(entityObject);
foreach(nombre de cadena en propiedades)
entrada .Property(nombre).IsModified = true;
p>
context.SaveChanges();
}
Ejemplo de uso usando (FooEntities context = new FooEntities())
{
FooEntity ef = new FooEntity();
//Por el bien del argumento, supongamos que esta entidad tiene 4 columnas:
// FooID (PK), BarID (FK), nombre, edad. CreadoPor, CreadoEn
//Simular cambios
ef.FooID = 1
ef.Name = "Billy"
ef; .Edad = 85;
context.Updatelt.FooEntitygt; (ef, "Nombre", "Edad"); // Solo quiero actualizar Nombre y Edad
}.