【发布时间】:2011-06-21 08:28:51
【问题描述】:
我正在使用 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);
}
谁能告诉我如何修复这个错误并更新表格。 当我尝试更新其他表时也会发生相同的错误。插入工作正常。 希望不会打扰到你。最好的问候。
【问题讨论】:
-
删除 if (updatedApplication.EntityState == EntityState.Detached) 并始终附加
-
它让我遇到了这个错误一个实体对象不能被多个 IEntityChangeTracker 实例引用。
-
好像没有人来帮我:(
-
所以它已经属于一个上下文,你应该更新那个 caontext,你能用 _DatabaseContext.Applications.AddObject(updatedApplication);而是
标签: c# asp.net entity-framework entity eisk