SO中有很多错误,但我认为这种情况有所不同。
我有一些运行良好的代码,我更新了一个实体等。但问题是它正在被缓存,当我用 AsNoTracking() 禁用缓存时,它开始抛出这个异常;
我所做的如下: 1. 在页面中我得到一个 EcoBonusRequest。2. 用户点击一个按钮并修改当前状态属性,并将一个列表项添加到工作流历史集合(ecobonusrequest 对象的关联集合)中。3.我调用udpate方法,设置状态为修改,这里抛出异常。
这是我的代码>
EcoBonusRequestRepository.cs
public void UpdateEcoBonusRequest(EcoBonusRequest ecoBonusRequest)
{
_context.EcoBonusRequests.Attach(ecoBonusRequest);
_context.Entry(ecoBonusRequest).State = EntityState.Modified;
}
EcoBonusRequestBL
public void Update(EcoBonusRequest ecoBonusRequest)
{
DALFacade.UpdateEcoBonusRequest(ecoBonusRequest);
}
生态红利请求页面
public void ChangeStatus(EcoBonusRequest ecoBonusRequest, string stepname, string who, string choosenoption)
{
ecoBonusRequest.WorkflowHistories = new List<WorkflowHistory>
{
new WorkflowHistory()
{
Date = DateTime.Now,
What = choosenoption,
StepName = stepname,
Who = who
}
};
ecoBonusRequest.CurrentStatus = _currentStepBlo.StepName;
var ecoBonusRequestBL = new EcoBonusRequestBL();
ecoBonusRequestBL.Update(ecoBonusRequest);
}
这就是我首先获取对象的方式:(我不会在此处粘贴所有层的所有代码)
protected override void OnInit(EventArgs e)
{
var requestBaseId = RequestBaseId;
if (requestBaseId != null)
{
EcoBonusRequest request = GetDBRequest(requestBaseId.Value);
在达尔
public IQueryable<EcoBonusRequest> FindEcoBonusRequests(System.Linq.Expressions.Expression<Func<EcoBonusRequest, bool>> predicate)
{
return _context.EcoBonusRequests.AsNoTracking().Where(predicate);
}