删除包含两个数据库的表中的记录时出错

本文关键字:记录 出错 数据库 删除 包含两 | 更新日期: 2023-09-27 18:28:22

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

我正在做的一个小程序有问题,希望你能帮我:我有一个数据库,里面有两个表customer(pelo2-hair),我在两个不同的窗口中访问它们。起初,在第一个窗口中有一个删除按钮,可以删除所有选定的客户记录,但在另一个窗口中,所有客户数据窗口都会更改,这会给我带来以下错误:

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。我能帮你知道我做错了什么吗?可以采取不同的做法吗?谢谢你的帮助。

删除包含两个数据库的表中的记录时出错

此行:

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