Contexto por solicitud: cómo actualizar la entidad

Tengo una clase de repositorio como se muestra a continuación. Existe un método para obtener el objeto de entidad: GetPaymentByID. Estoy recuperando un objeto de pago y haciendo un cambio en su propiedad PaymentType. Pero esto no se refleja en la base de datos. Sé el motivo: el método SaveContextChanges utiliza un nuevo contexto.

Necesito usarContexto por solicitud enfoque. Por lo tanto estoy creando nuevo contexto en cada método.

En este escenario, ¿cómo puedo modificar el código para actualizar con éxito la base de datos?

Nota: El programa cliente no debe usar el ObjectContext porque elEl repositorio se puede cambiar con otro repositorio que no use Entity Framework.

Nota: "Un DataContext es ligero y no es caro de crear"

namespace MyRepository
{


public class MyPaymentRepository
{
    private string connectionStringVal;
    public MyPaymentRepository()
    {
        SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
        sqlBuilder.DataSource = ".";
        sqlBuilder.InitialCatalog = "LibraryReservationSystem";
        sqlBuilder.IntegratedSecurity = true;

        // Initialize the EntityConnectionStringBuilder.
        EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
        entityBuilder.Provider = "System.Data.SqlClient";
        entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
        entityBuilder.Metadata = @"res://*/MyEDMtest.csdl|res://*/MyEDMtest.ssdl|res://*/MyEDMtest.msl";

        connectionStringVal = entityBuilder.ToString();
    }




    public MyEntityDataModelEDM.Payment GetPaymentByID(int paymentID)
    {
        MyEntityDataModelEDM.Payment payment;
        using (var myObjectContext2 = new MyEntityDataModelEDM.LibraryReservationSystemEntities(connectionStringVal))
        {

            Func<MyEntityDataModelEDM.Payment, bool> predicate = (p => p.PaymentID == paymentID);
            payment = myObjectContext2.Payments.SingleOrDefault(predicate);
        }
        return payment;
    }


    public void SaveContextChanges(MyEntityDataModelEDM.Payment paymentEntity)
    {
        using (var myObjectContext = new MyEntityDataModelEDM.LibraryReservationSystemEntities(connectionStringVal))
        {
            myObjectContext.SaveChanges();
        }
    }


}


}

Cliente

        MyRepository.MyPaymentRepository rep = new MyRepository.MyPaymentRepository();

        MyEntityDataModelEDM.Payment p2= rep.GetPaymentByID(1);
        p2.PaymentType = "TeSSS";
        rep.SaveContextChanges(p2);

LEYENDO

Agregar / Adjuntar y estados de entidad:http://blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part-4-add-attach-and-entity-states.aspx

¿La mejor manera de inicializar un contexto de marco de entidad?

Entity Framework 4.1: ¿cómo trabajar con el contexto de los datos de la vida útil de cada llamada?

Adjuntar y separar entidades del contexto correctamente en EF4.1

Contexto de la gestión de la vida en el repositorio y unidad de patrón de trabajo.

Entity Framework Contextos de objetos múltiples

EF4 - Context.Entry no está disponible para cambiar un estado de entidad

Respuestas a la pregunta(1)

Su respuesta a la pregunta