1

ado.net と でテーブル ロック例外をキャッチする最善の方法は何iAnywhere.Data.SqlAnywhere.EF6ですか? 私の問題は、ユーザーがテーブル内のすべての行をロックしたというメッセージを含むcommand.ExecuteNonQuery原因です。SAException

問題は、それが のSAExceptionような特定のものではなく、一般的なものSATableLockExceptionであることです。

問題は、エラー メッセージを使用せずに、エラーがテーブル ロック例外であることを検出する方法です。

どうもありがとうございました!

4

1 に答える 1

0

わかりました、私はこれに対する解決策を見つけました。例外をキャストしSAExceptionて Error-Code プロパティを使用しました (@tzup に感謝します)。

例:

try
{
    // Maybe some sa-exception occurse
}
catch (Exception ex)
{
    if (ex is iAnywhere.Data.SQLAnywhere.SAException)
    {
        var saException = (iAnywhere.Data.SQLAnywhere.SAException)ex;

        // Only catch table locks
        if (saException.NativeError == -210 || saException.ErrorCode == -210
             || saException.NativeError == -1281 || saException.ErrorCode == -1281)
        {
            // Table lock here!
        }
    }
    else { // do some thing else... }
}
于 2016-01-11T11:12:35.033 に答える