gpt4 book ai didi

c# - 更新查询时 ODP .NET 语句超时

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:52 27 4
gpt4 key购买 nike

问题:

基本上,出于某种原因,更新语句会无休止地等待 (ExecuteNonQueryAsync())。Insert 工作正常,我尝试使用硬编码参数硬编码一个简单的更新语句(没有merge),相同story,甚至尝试删除 where 子句并更新所有行,同样的问题。

commandTimeout 设置为 1 秒后,我设法识别出 TimeoutException,为什么会这样?我不知道。

编辑:情节扭曲。现在我有随机成功的更新,这让我更加茫然。我基本上尝试了所有我能想到的可能场景来识别问题中存在的任何模式,我唯一的结论是更新成功率是完全随机的......

仍然插入工作正常。


这是简化的代码部分。

public class CipCheckRepository : ICipCheckRepository
{
private string connectionString = "Data Source=****;User Id=****;PASSWORD=****;Persist Security Info=True;";

public CipCheckRepository()
{}

public async Task InsertOrUpdate(CipCheck cipCheck)
{
using (var uow = new UnitOfWork(connectionString))
{
using (var cmd = uow.CreateCommand())
{
cmd.CommandText = @"
MERGE INTO test
USING dual
ON (id = :CAD_ID)
WHEN MATCHED THEN
UPDATE SET value = :ISRA_NUMBER
WHEN NOT MATCHED THEN
INSERT
(
id,
value
)
VALUES
(
:CAD_ID,
:ISRA_NUMBER
)";

cmd.Parameters.AddWithValue("CAD_ID", 1);
cmd.Parameters.AddWithValue("ISRA_NUMBER", cipCheck.IsraNumber);

cmd.CommandTimeout = 1;

try
{
await cmd.ExecuteNonQueryAsync();
}
catch (OracleException ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}
}

UnitOfWork类是为抽象问题而创建的。

我如何确定永无休止的查询的原因以及可以采取哪些措施来防止它?

最佳答案

似乎我一直在以某种方式锁定表,在通过 Oracle Developer 提交所有语句后,怪癖消失了。

enter image description here

关于c# - 更新查询时 ODP .NET 语句超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58083864/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com