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?

¿Fue útil?

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();
    }
} 

artículo 1
artículo 2

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top