Я возвращаю объект RunWorkerCompletedEventArgs
, и я пытаюсь получить номер ошибки, который я могу видеть в объекте. Когда я использую if (err.Number!= 2627){}
я получаю следующую ошибкуПолучить содержимое объекта RunWorkerCompletedEventArgs
«объект» не содержит определение для «Номера» и без расширения метода «Номера» принимающего первого аргумент «объекта» типа может быть найден (в вы не указали директиву или ссылку на сборку?)
Возможно, кто-нибудь посоветует, как я могу получить содержимое объектов (см. непосредственное окно ниже).
Также, пожалуйста, кто-нибудь может объяснить, что на самом деле происходит здесь, поскольку ошибка указывает, что объект не содержит определения для «Номер», но похоже, что он существует?
КОД:
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);
}
}
}
ПРИСВОЕНИЕ е:
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
Результат определяется как объект, поэтому вы не можете увидеть свойство Number на нем. Вам нужно бросить его первым. – Surfbutler
Вам нужно отдать его типу, которому вы назначаете e. Вам необходимо опубликовать код, в котором вы указываете e. – Paparazzi