【发布时间】:2017-11-13 11:10:34
【问题描述】:
在unitOfWork.Complete(); 我收到此错误
System.Data.Entity.Infrastructure.DbUpdateConcurrencyException: '存储更新、插入或删除语句影响了意外 行数 (0)。实体可能已被修改或删除 实体已加载
我查看了this,但没有任何结果。 this question 也对我没有多大帮助。 重点是什么?哪里出错了?
计划
using (var unitOfWork = new UnitOfWork(new
var ultimaDateTimeElaborata =
unitOfWork.LogRegistrazioneLavorazioneMacchinaRepository.
GetUltimaRegistrazioneLineaRilevata(l.IdLinea);
[...]
unitOfWork.LogRegistrazioneLavorazioneMacchinaRepository.Add(
new LogRegistrazioneLavorazioneMacchina()
{
IdMacchina = "MB1_1",
DataRegistrazione = DateTime.Now,
IdLinea = 1,
MetriLinLato= 1,
TempoLavorazioneSecondi= 1,
IdLavorazioneLinea ="LavorazioneProva",
IdLavorazioneMacchina = "LMB_1_PP",
StepLavorazioneLinea = 3,
});
unitOfWork.Complete();
// HERE I GET THE ERROR!!!
// LogRegistrazioneLavorazioneMacchinaRepository.unitOfWork
//contains the right data I want to save
unitOfWork.Complete();
[...]
}
工作单位
public class UnitOfWork : IUnitOfWork
{
private readonly J2MSEntities _context;
public ILogRegistrazioneLavorazioneMacchinaRepository
LogRegistrazioneLavorazioneMacchinaRepository { get; private set; }
public UnitOfWork(J2MSEntities context)
{
_context = context;
LogRegistrazioneLavorazioneMacchinaRepository(_context);
}
public int Complete()
{
return _context.SaveChanges();
}
public void Dispose()
{
_context.Dispose();
}
}
【问题讨论】:
-
愚蠢的问题,调用 Program 部分的任何请求是否也在其他地方被调用?或者有什么会产生另一个
UnitOfWork类?据我所知,如果您有两个DbContext尝试更新同一个项目,则可能会发生这种情况......后来的DbContext将因并发错误而失败。 -
@BagusTesa 是的,但仅用于阅读目的。顺便说一句,我更新了“程序”代码。
标签: c# asp.net entity-framework repository-pattern savechanges