LINQ to SQL в исключении silverlight - PullRequest
0 голосов
/ 21 ноября 2011

Это продолжение моего предыдущего вопроса: Не удалось найти реализацию шаблона запроса

Теперь мне удалось запросить мою базу данных, и я не могу получить контент на моей веб-странице.

Я пытаюсь вернуть код, используя следующий код:

private void button1_Click(object sender, RoutedEventArgs e)
{
    Service1Client client = new Service1Client();

    client.GetPersoonByIDCompleted += new EventHandler<GetPersoonByIDCompletedEventArgs>(client_GetPersoonByIDCompleted);
    client.GetPersoonByIDAsync("1");
}

void client_GetPersoonByIDCompleted(object sender, GetPersoonByIDCompletedEventArgs e)
{
    if (e.Error != null)
        textBox1.Text = e.Error.ToString();
    else
        label1.Content = e.Result.Voornaam.ToString();
}

Однако, когда я нажимаю кнопку, я получаю следующие ошибки:

Ссылка на объект не установлена ​​для экземпляра объекта.

в SilverlightApplication1.MainPage.client_GetPersoonByIDCompleted (Объект отправитель, GetPersoonByIDCompletedEventArgs e) в SilverlightApplication1.ServiceReference1.Service1Client.OnGetPersoonByIDCompleted (Объект состояние)

Странно то, что это работает, когда я не использую LINQ, но обычный SQL.

    string sql = "SELECT ID, naam, voornaam, leeftijd FROM tblPersoon WHERE id=@pmID";
    Persoon pers = null;
    string connstr = ConfigurationManager.ConnectionStrings["connDB"].ConnectionString;

    using (SqlConnection cn = new SqlConnection(connstr))
    {
        SqlCommand com = new SqlCommand(sql, cn);
        com.Parameters.AddWithValue("pmID", id);
        cn.Open();
        SqlDataReader reader = com.ExecuteReader();
        if (reader.Read())
        {
            pers = new Persoon();
            pers.ID = reader.GetString(0);
            pers.Naam = reader.GetString(1);
            pers.Voornaam = reader.GetString(2);
            pers.Leeftijd = reader.GetInt32(3);
        }
    }

    return pers;
}

LINQ результат:

LINQ

Результат SQL:

SQL

Спасибо за помощь, я очень ценю это! Томас

1 Ответ

2 голосов
/ 21 ноября 2011

Вы получаете это конкретное исключение, пытаясь ссылаться на свойство "e.Result", когда оно недопустимо, т. Е. Когда вызов метода вернул исключение вместо значения.Прежде чем ссылаться на e.Result, убедитесь, что e.Error == null, а если нет, побалуйте себя кодом обработки ошибок или сообщений, например:

void client_GetPersoonByIDCompleted(object sender, GetPersoonByIDCompletedEventArgs e)
{
    if (e.Error != null)
    {
        MessageBox.Show("An error occurred: " + e.Error.ToString());
    }
    else
    {
        label1.Content = e.Result;
    }
}

или чем-то в этом роде.

...