所有
我正在尝试将多个记录保存回数据库,并希望使用乐观并发(数据库获胜)。在我的模型中,我有
=IF(B1="","",IF(N(B1),IF(ROW(A2)-ROW($A$1)-1<SECOND(MAX($A$2:$A$7)-MIN($A$2:$A$7))+1,B1+TIME(0,0,1),""),A2))
在我看来,用户可以一次更新多个记录,然后传递给我的控制器。
添加和修改数据没有问题,但我看到的涉及DBConcurrencyException的每个示例都假定一次只更新一条记录。因此,有没有办法让我确定特定记录是否存在DBConcurrencyException,同时让其余记录通过(没有多次访问数据库)?
public class MySampleTable
{
[Key]
public int ID { get; set; }
public string SomeValue { get; set; }
[Timestamp]
public byte[] RowVersion{ get; set; }
}
答案 0 :(得分:0)
尝试捕获DbUpdateConcurrencyExcelption,而不是使用DbConcurrencyException。这将公开异常的Entries属性,该属性具有属于异常的所有条目。
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException ex)
{
//do something with ex.Entries poperty
}
也适用于异步:
try
{
await _db.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException ex)
{
//do something with ex.Entries poperty
}