ObjectStateManager does not contain an ObjectStateEntry with a reference to an object of type
I am using EISK (Employee Info Starter Kit) to develop an application. My entity diagram looks like this

           int apId = Convert.ToInt32(Request.QueryString["ApplicationID"]);
            ApplicationBLL objGetApplication = new ApplicationBLL();
            Appdec.YEP.BusinessEntities.Application objApplication =
            objGetApplication.GetApplicationByApplicationID(apId);
            objApplication.Status = (ddlStatus.SelectedValue == "0" ? false : true);
            new ApplicationBLL(new Appdec.YEP.DataAccessLayer.DatabaseContext()).UpdateApplication(objApplication);
now the update method at bussiness logic is
 [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, true)]
    public void UpdateApplication(Application updatedApplication)
    {
        // Validate Parameters
        if (updatedApplication == null)
            throw (new ArgumentNullException("updatedApplication"));
        // Validate Primary key value
        if (updatedApplication.ApplicationID.IsInvalidKey())
            BusinessLayerHelper.ThrowErrorForInvalidDataKey("ApplicationID");
        // Apply business rules
        OnApplicationSaving(updatedApplication);
        OnApplicationUpdating(updatedApplication);
        //attaching and making ready for parsistance
        if (updatedApplication.EntityState == EntityState.Detached)
            _DatabaseContext.Applications.Attach(updatedApplication);
_DatabaseContext.ObjectStateManager.ChangeObjectState(updatedApplication, System.Data.EntityState.Modified);//this line throws the error 
//ObjectStateManager does not contain an ObjectStateEntry with a reference to an object of type
        int numberOfAffectedRows = _DatabaseContext.SaveChanges();
        if (numberOfAffectedR开发者_运维技巧ows == 0) 
            throw new DataNotUpdatedException("No application updated!");
        //Apply business workflow
        OnApplicationUpdated(updatedApplication);
        OnApplicationSaved(updatedApplication);
    }
Can somebody tell me how to fix this error and update the tables. the same error ocurres when i try to update other tables also. The insert works fine. Hoping not to bother you. Best Regards.
So it already belongs to a context,and you should update that context. It can't be attached to new context, You can create a new instance of updatedApplication and copy all properties of updatedApplication to this new one and attach new entity to application.
Also change
  if (newApp .EntityState == EntityState.Detached)
            _DatabaseContext.Applications.Attach(newApp );
to
var newApp = Application ();
 //Copy all propery of updatedApplication to  newApp here 
            if (newApp .EntityKey == null || newApp .EntityKey.IsTemporary)
            {
                _DatabaseContext.Applications.AddObject(newApp );
            }
            else
            {
                _DatabaseContext.Applications.Attach(newApp );
            }
_DatabaseContext.ObjectStateManager.ChangeObjectState(newApp , System.Data.EntityState.Modified);
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论