1

最初に、私の英語が原因で、これはスペイン語から英語への機械翻訳であることを報告したいと思います。翻訳に誤りがあった場合はご容赦ください。

私が行っている小さなプログラムに問題があり、あなたが私を助けてくれることを願っています: 私は2つのテーブル顧客 (pelo2 hair) を持つデータベースを持っています。最初は2つの異なるウィンドウでアクセスし、最初のウィンドウには削除ボタンがありました.ウィンドウを開き、選択したすべての顧客レコードを削除しますが、他のウィンドウにすべての顧客データ ウィンドウを表示して変更すると、次のエラーが表示されます。

Unable to cast object of type 'System.Data.Linq.DataQuery`1[Peluqueria.Pelos2]' to type 'Peluqueria.Pelos2'.

これは、ボタンエリミナーのイベントで時々発生します

        private void Eliminar_Click(object sender, RoutedEventArgs e)
    {
        MessageBoxResult result = MessageBox.Show("Seguro que quieres eliminar este cliente?", "Confirmar",
        MessageBoxButton.YesNo, MessageBoxImage.Information);
        if (result == MessageBoxResult.Yes)
        {
            Pelo guar = (Pelo)Application.Current.Properties["seleccionar"];


                var verTrabajo = (from o in baseDeDatos.Pelos2s
                                  where o.num == guar.num
                                  select o);


                baseDeDatos.Pelos2s.DeleteOnSubmit((Pelos2)verTrabajo);
                baseDeDatos.SubmitChanges();
                actualizarDatos();

        }
    }          

具体的には次の行で:

baseDeDatos.Pelos2s.DeleteOnSubmit((Pelos2)verTrabajo);

baseDeDatos.Pelos を使用しても、同じエラーが発生すると言わざるを得ません。私が間違っていることを知ることができますか?別の方法で行うことはできますか?ご協力いただきありがとうございます。

4

1 に答える 1

3

この行:

var verTrabajo = (from o in baseDeDatos.Pelos2s
                                  where o.num == guar.num
                                  select o);

コレクションを返します。コレクションには、削除する予定のレコードが 1 つだけ含まれている可能性がありますが、具体的にする必要があります。

1 つの結果を返すことを期待している場合は、その結果を使用して削除できるように、SingleOrDefault()を使用してみてください。

var verTrabajo = (from o in baseDeDatos.Pelos2s
                                  where o.num == guar.num
                                  select o).SingleOrDefault();

削除に使用する前に、そうでないかどうかを確認nullしてください。

于 2013-08-20T08:32:02.417 に答える