提问人:user22144337 提问时间:9/29/2023 最后编辑:Thom Auser22144337 更新时间:9/29/2023 访问量:100
for 循环导致 C# 和存储过程中的死锁
for loop causing a deadlock in c# and stored procedure
问:
我花了很长时间试图解决这个僵局。daedlock 位于_dbcontext.DeleteTags(tag);
和转到同一个图形表(这就是我无法使用 EF 删除/插入的原因,因为它尚不受支持)但是,死锁正在发生,可能是因为 for 循环。你能建议如何分类吗?AddTags
DeleteTags
DeleteTags
public async Task UpdateScenario()
try
{
await _businessCore.TransactionManager.Begin();
_dbcontext.MyData.Update(scenario);
foreach (var tag in newtags)
{
tag.LabelGroupId = labelGroup.LabelGroupId;
tag.LabelId = (await _dbcontext.AddTags(tag)).LabelId;
tag.Attributes.ToList().ForEach(z => z.LabelId = lbl.LabelId);
}
foreach (var tag in deletedTags)
{
await _dbcontext.DeleteTags(tag);
}
await Validation.SaveChangesWithValidation(_dbcontext);
await _businessCore.TransactionManager.Commit();
}
catch
{
await _businessCore.TransactionManager.Rollback();
throw;
}
DeleteTag
功能
public async Task DeleteTag(Tags tag)
{
await this.Labels.FromSqlInterpolated($"exec uspDeleteTag {tag.LabelId}").ToListAsync();
}
我的存储过程:
CREATE PROCEDURE [dbo].[uspDeleteTags]
(@LabelId INT)
AS
BEGIN
DELETE FROM tgphLabel
OUTPUT DELETED.LabelId, DELETED.LabelTypeId, DELETED.LabelGroupId
WHERE LabelId = @LabelId;
END
答: 暂无答案
评论
LabelId
tgphLabel