0
执行查询我有以下的Linq:死锁SQLServer中
var qry = s.GetTable<MessageEventDTO>().Where(x => x.MessageName == messageName && x.SourceTyp == sourceTyp && x.Source == source && (x.Status == MessageEventStatus.open || x.Status == MessageEventStatus.acknowledged));
goneMessages = qry.ToList();
var ret = qry
.Set(x => x.Status, x => x.Status | MessageEventStatus.gone)
.Set(x => x.TimestampGone, timeStamp)
.Update();
return ret;
至极将被转换为SQL语句:
UPDATE MessageEvents SET Status = Status | 1, TimeStampGone = @1 WHERE MessageName = @2 AND SourceTyp = @3 Source = @4 AND (Status = 0 OR Status = 2)
问题是现在有多个更新并行运行,我有死锁例外,但我不明白为什么?
你有在桌子上什么指标?索引调整通常会避免死锁。 –
您是否在代码中打开交易?我认为这不应该发生在你不使用交易时...... –