Asp.net mvc 虽然值不同,但不会引发OptimisticConcurrencyException
我有一个问题,OptimisticConcurrencyException没有被抛出,我有一个在我的HttpPost编辑上运行的代码Asp.net mvc 虽然值不同,但不会引发OptimisticConcurrencyException,asp.net-mvc,asp.net-mvc-3,entity-framework-4.1,Asp.net Mvc,Asp.net Mvc 3,Entity Framework 4.1,我有一个问题,OptimisticConcurrencyException没有被抛出,我有一个在我的HttpPost编辑上运行的代码 [HttpPost] public ActionResult Edit(IncidentViewModel incidentViewModel) { if(ModelState.IsValid) { Incident incident; if (IncidentView
[HttpPost]
public ActionResult Edit(IncidentViewModel incidentViewModel)
{
if(ModelState.IsValid)
{
Incident incident;
if (IncidentViewModel.TryParse(incidentViewModel, out incident))
{
Incident entry = _incidentManager.Find(entity => entity.Id == incident.Id);
if(incident.Version != entry.Version)
{
}
如果我打开两个浏览器并通过同时编辑强制执行OptimisticConcurrencyException,则incident.Version和entry.Version的值不同,但不会引发异常
在my.edmx文件中,版本属性设置为StoreGeneratedPattern=Computed,并发模式=Fixed。类型为时间戳二进制
读了这篇文章,但这并没有真正阐明这个问题,我没有明白
编辑:.edmx文件和使用它的控制器位于两个不同的项目中,但解决方案相同
编辑:
这是我在管理器中的更新方法
public virtual void Update(T updatedEntry)
{
if (updatedEntry == null) throw new ArgumentNullException("updatedEntry");
RequiredData(updatedEntry);
Repository.Update(updatedEntry);
Repository.Commit();
}
我的存储库更新和提交是:
public void Update(T entity)
{
object originalItem;
var key = Context.CreateEntityKey(Context.GetEntitySet<T>().Name, entity);
if (Context.TryGetObjectByKey(key, out originalItem))
{
Context.ApplyCurrentValues(key.EntitySetName, entity);
}
}
public int Commit()
{
var saveValue = Context.SaveChanges();
return saveValue;
}
您的代码没有显示如何实际保存实体。请检查我的解释或。我想它是重复的。