繁体   English   中英

c#使用LINQ to SQL更新表?

[英]c# updating table using LINQ to SQL?

我正在尝试使用此LINQ查询更新我的表

public void updateProduct(
    int selectedIDToUpdate, 
    string prodNAMEToUp, 
    double prodPriceToUp, 
    string prodTYPEToUp, 
    int prodMANUToUp, 
    int prodCODEToUp)
{
     DataClassesLINQEPOSDataContext dcld = new DataClassesLINQEPOSDataContext();
     TBLPRODUCT tblprod = (from prod in dcld.TBLPRODUCTs
                           where prod.product_id == selectedIDToUpdate
                           select prod).First();
     tblprod.product_name = prodNAMEToUp;
     tblprod.product_price = prodPriceToUp;
     tblprod.product_type = prodTYPEToUp;
     tblprod.product_manufacturer = prodMANUToUp;
     tblprod.product_code = prodCODEToUp;
     dcld.SubmitChanges();
}

然后当我开始运行程序时,出现此错误

“” InvalidCastException未处理“”指定的转换无效。“

抱歉,我无法发布图片,因为我没有足够的声誉“点” :(

这是在我的课程上传递参数的控件。

private void btnSaveToUpdate_Click(object sender, EventArgs e)
    {
        if (txtNameToUpdate.Text != "" || 
        txtPriceToUpdate.Text != "" || 
        txtTypeToUpdate.Text != "" || 
        txtCodeToUpdate.Text != "")
        {
            Connection_Products update = new Connection_Products();
            int selctedID = selectedIDToUpdate;
            string prodNAMEToUp = txtNameToUpdate.Text;
            double prodPriceToUp = double.Parse(txtPriceToUpdate.Text);
            string prodTYPEToUp = txtTypeToUpdate.Text;
            int prodMANUToUp = Convert.ToInt32(cmbManufacturerToUpdate.SelectedValue);
            int prodCODEToUp = Convert.ToInt32(txtCodeToUpdate.Text);
            update.updateProduct(selctedID, prodNAMEToUp, prodPriceToUp, 
            prodTYPEToUp, prodMANUToUp, prodCODEToUp);
        }
        else
        {
            MessageBox.Show("Error");
        }
    }

您尝试存储的值与数据库中列的数据类型之间很可能存在某些数据类型不匹配的情况。 这将在数​​字列之一中。

如果prodPriceToUp列使用money数据类型,则此映射到Linq2Sql中的decimal类型。 您试图将输入参数的double为十进制,这可能会导致此问题。 保存前,尝试将prodPriceToUp转换为decimal

我猜你在updateProduct参数和tblprod属性之间的类型映射中缺少某些tblprod 请检查这里您使用的是正确的类型

这是因为以下之一试图转换为无效类型:

 tblprod.product_name = prodNAMEToUp;
 tblprod.product_price = prodPriceToUp;
 tblprod.product_type = prodTYPEToUp;
 tblprod.product_manufacturer = prodMANUToUp;
 tblprod.product_code = prodCODEToUp;

检查所有这些,确保左侧的类型与右侧的类型相同。 例如,当您尝试将字符串保存到该属性时,请确保“ tblprod.product_name”是字符串属性。

在您的LINQ查询中,where子句也可能会出现此问题,请确保“ prod.product_id”是整数,而不是长整型或短整型。

如果这些都还可以,但是您仍在获取异常,那么您将需要告诉use哪一行在引发异常,并使用tblprod结构的详细信息;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM