none
Actualizar entidad con objetos anidados RRS feed

  • Pregunta

  • Hola,

    Tengo un problema con Entity Framework 4 y no le acabo de ver solución, pese a que la teoría dice que deberia hacerse así. Tengo una entidad que tiene anidada una colección de objetos (que se corresponden con otra entidad). El caso es que intento modificar algunos de los elementos de la colección (cambiando un valor a una propiedad de tipo double por ejemplo) y luego le paso la entidad (la que contiene la colección) a un metodo update que crea un contexto de vida corto, aplica los cambios y guarda el contexto.

    Utilizo Self-Tracking Entities.

    La teoría dice que yo puedo recuperar la entidad (objeto) de la base de datos (mediante un método Get que crea un contexto de vida corto) hacer modificaciones en el mismo, incluso de objetos anidados (que a su vez son entidades) y luego enviar la entidad padre y se actualiza todo el grafo.

    El problema es que no lo hace asi. Incluso he tratado de mirar el State del ChangeTracker de cada una de las entidades que modifico, y salvo que modifique la entidad padre el resto de entidades siempre tienen el State a Unchanged.

    El método Update sería algo asi:

     

    public
     void
     Update(Lote item)
    {
    using (var context = BDEntities())
    {
    context.Lote.ApplyChanges(item)
    context.ObjectStateManager.ChangeObjectState(item, EntityState.Modified);
    context.SaveChanges();
    }
    }

     

    No se si habría que utilizar un Include en el context para cargar las entidades de la relación o no. Lo he probado pero tampoco funciona de esa manera. En teoría esto solo deberia funcionar, pero no lo hace y el estado del objeto y sus relaciones sigue siendo el mismo, sin cambios.

    ¿Alguna idea?

    jueves, 8 de julio de 2010 11:42