C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – ObjectStateManager不包含ObjectStateEntry,它引用了类型的对象大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用EISK(员工信息入门套件)来开发应用程序.我的实体图看起来像这样我尝试通过此代码更新应用程序表.

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

现在商务逻辑的更新方法

[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 (numberOfAffectedRows == 0) 
            throw new DatanotupdatedException("No application updated!");

        //Apply business workflow
        OnApplicationupdated(updatedApplication);
        OnApplicationSaved(updatedApplication);

    }

有人可以告诉我如何修复此错误并更新表.
当我尝试更新其他表时,同样的错误发生.插件工作正常.
希望不要打扰你.最好的祝福.

解决方法

所以它已经属于一个上下文,你应该更新该上下文.
它不能附加到新的背景,
可以创建updatedApplication的新实例,并将updatedApplication的所有属性复制到此新实例,并将新实体附加到应用程序.

也改变

if (newApp .EntityState == EntityState.Detached)
            _DatabaseContext.Applications.Attach(newApp );

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

大佬总结

以上是大佬教程为你收集整理的c# – ObjectStateManager不包含ObjectStateEntry,它引用了类型的对象全部内容,希望文章能够帮你解决c# – ObjectStateManager不包含ObjectStateEntry,它引用了类型的对象所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。