Como actualizar objeto sin contextos de datos.
-
03-07-2019 - |
Pregunta
Entity framework proporciona una gran flexibilidad para actualizar datos en el mismo contexto de datos
Dim personA = (from p in datacontext.Person where p.PersonID = 1 select p)
personA.name = txtName.value
datacontext.savechanges()
Si tengo que mover esta función de actualización a la capa de servicio que solo toma " Persona " en la solicitud, cuál sería la mejor forma de asignar mi " Persona " solicitar objeto en el datacontext sin hacer la copia profunda de nuevo?
Solución
Debe adjuntar su objeto de entidad a un contexto de datos.
También necesita ampliar su clase parcial de contexto de datos con el método AttachUpdeted. Como cuando se adjunta un objeto a un contexto de datos, no se sabe si se han realizado actualizaciones. El siguiente código le indicará al contexto de los datos que cada propiedad se ha actualizado y debe escribirse en la base de datos.
public static void Save(EntityObject entity)
{
using(MyContext ctx = new MyContext)
{
ctx.AttachUpdated(entity);
ctx.SaveChanges();
}
}
public static void AttachUpdated(this ObjectContext obj, EntityObject objectDetached)
{
if (objectDetached.EntityState == EntityState.Detached)
{
object original = null;
if (obj.TryGetObjectByKey(objectDetached.EntityKey, out original))
obj.ApplyPropertyChanges(objectDetached.EntityKey.EntitySetName, objectDetached);
else
throw new ObjectNotFoundException();
}
}