0

オブジェクトを返していますが、RunWorkerCompletedEventArgsオブジェクトに表示されるエラー番号を取得しようとしています。使用するif (err.Number!= 2627){}と、次のエラーが表示されます

'object' には 'Number' の定義が含まれておらず、タイプ 'object' の最初の引数を受け入れる拡張メソッド 'Number' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

オブジェクトの内容を取得する方法を教えてください (下のウィンドウをすぐに参照してください)。

また、エラーはオブジェクトに 'Number' の定義が含まれていないことを示していますが、存在しているように見えるため、ここで実際に何が起こっているのか説明してもらえますか?

コード:

private void GBHworker_RunWorkerCompleted(object sender, 
             RunWorkerCompletedEventArgs e)
{
    //update UI once worker complete his work 
    if (e.Result != null)
    {
        var err = e.Result;
        if (err.Number!= 2627) //don't want to raise error on duplicate primary key
        {
            MessageBoxButton btn = MessageBoxButton.OK;
            var result = ModernDialog.ShowMessage(e.Result.ToString(), 
                         "Error", btn);
        }
    }
}

割り当て e:

private void GBHworker_DoWork(object sender, DoWorkEventArgs e)
{

  //....DB parameter setup
  try
  {
    cmd_insert.ExecuteNonQuery();
  }
  catch (Exception crap)
  {
    if (e != null)
      e.Result = crap;
  }

 }

即時ウィンドウ:

?err
{"Violation of PRIMARY KEY constraint 'PK_XYZ'. Cannot insert duplicate key in object 'dbo.XYZ. The duplicate key value is (30527293868).\r\nThe statement has been terminated."}
    base {System.Data.Common.DbException}: {"Violation of PRIMARY KEY constraint 'PK_XYZ'. Cannot insert duplicate key in object 'dbo.XYZ'. The duplicate key value is (30527293868).\r\nThe statement has been terminated."}
    Class: 14
    ClientConnectionId: {*******}
    Errors: {System.Data.SqlClient.SqlErrorCollection}
    LineNumber: 1
    Number: 2627
    Procedure: ""
    Server: "*******"
    Source: ".Net SqlClient Data Provider"
    State: 1
4

2 に答える 2