Ein Objekt mit demselben Schlüssel ist bereits vorhanden in der ObjectStateManager

Habe ich ein Szenario, das konnte nicht die Lösung und brauche etwas Hilfe
Wie kann ich das erreichen,
Ich würde gerne aktuelle Datensatz für den client zu modifizieren und statt der update-ich möchte noch hinzufügen, dass der neue Datensatz in die Tabelle für historische Daten ändern,

    client c = new client();
    using (DBEntities db = new DBEntities())
    {
        //get current records in the client table for client
        IQueryable<client> co = from p in db.client where p.CUS_NUMBER == scd.cus_number && p.isCurrent == true select p;

        c = co.First();

        //update email and and address
        c.EMAIL = Helper.CleanInput("[email protected]");
        c.ADDRESS = Helper.CleanInput("123 Sheppard");

        //instead of updating current record I'd like to add new record to the table to keep historical changes
        db.AddToclient(c);
        db.SaveChanges();
        //I get error that 
        //An object with the same key already exists in the ObjectStateManager. 
        //The existing object is in the Modified state. An object can only be added to 
        //the ObjectStateManager again if it is in the added state.

Vollständige Fehlermeldung

Wird ein Objekt mit demselben Schlüssel ist bereits vorhanden in der ObjectStateManager. Das vorhandene Objekt wird in dem Modifizierten Zustand. Ein Objekt kann nur Hinzugefügt werden, um den ObjectStateManager wieder, wenn es in dem zusätzlichen Zustand.

InformationsquelleAutor user2110791 | 2013-02-26

Schreibe einen Kommentar