删除具有两个数据库的表中的记录时出错

时间:2013-08-20 08:25:36

标签: c# wpf visual-studio-2010

首先,我想报告一下,由于我的英语,这是一个从西班牙语到英语的机器翻译,请原谅翻译中可能存在的错误。

我在我正在做的小程序中遇到问题,我希望你能帮助我: 我有一个带有两个表客户(pelo2发)的数据库,我在两个不同的窗口中访问它们,首先在第一个窗口中有一个删除按钮,删除所有选定的客户记录,但是让其他窗口显示所有客户数据窗口并更改它给了我以下错误:

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

偶尔会发生按钮Eliminar

        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。 我可以帮你知道我做错了什么吗? 它能以不同的方式完成吗?   谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

这一行:

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

返回一个集合。很可能该集合只包含您希望删除的一条记录,但您需要具体。

如果您希望它返回一个结果,那么您可以使用该结果删除尝试使用SingleOrDefault()

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

在将其用于删除之前,请务必检查它是否为null