错误:值不能为空。参数名称:实体

时间:2012-05-07 19:18:31

标签: c# asp.net linq

使用linq插入数据时出现此错误。在这里我有一个表有两列,一列是标识列,另一列是可空的marquee txt。请提供解决方案。 我的代码在这里。

   protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            Marquee existing = context.Marquees.FirstOrDefault();
            if (existing != null)
            {
                 existing.marquee1 = txtMarquee.Text;
                 context.SubmitChanges();
                 lblmsg.Text = "Data Saved Successfully";
                 generalFunction.goGreen(lblmsg);
            }
            else
            {
                Marquee newMarquee = new Marquee();
                 newMarquee.marquee1 = txtMarquee.Text;
                context.Marquees.InsertOnSubmit(existing);
                context.SubmitChanges();
                lblmsg.Text = "Data Saved Successfully";
                generalFunction.goGreen(lblmsg);
            }
        }
        catch (Exception ee)
        {
            lblmsg.Text = "Error: " + ee.Message;
        }
    }

1 个答案:

答案 0 :(得分:1)

你真的需要提供更多信息。由于缺少信息而有点难以辨别,但您已创建newMarquee,但之后您已将existing传递到InsertOnSubmit函数中。我不知道existing来自哪里,因为它不在代码中,但也许是null,这就是你得到这个错误的原因?

您说您编辑了代码,但问题仍然存在于您正在显示的内容中:在“else”部分中,existing是null,因此当您将其传递给InsertOnSubmit时,它可能会抛出错误。当null为null时,InsertOnSubmit将抛出该确切的错误。您希望该行代替context.Marquees.InsertOnSubmit(newMarquee);