"Sequence contains no elements" Entity Framework 中的错误

"Sequence contains no elements" error in Entity Framework

当我尝试从本地数据库检索对象时,它抛出异常

Sequence contains no elements

但是我已经将示例数据添加到数据库中。什么会导致此错误?

private void BindObjectToControls()
{
    Item = new Item();

    //set values entered by user into UI to corresponding properties of the object
    try
    {
        Item.Description = cbxType.Text.ToString() + ", " + tbxDesc.Text;
        Item.Category = (string)cbxCategory.SelectedItem;
        Item.Brand = (string)cbxBrand.SelectedItem;
        Item.Price = (int)nudPrice.Value;
    }
    catch(NullReferenceException ex)
    {
        MessageBox.Show("Error" + ex);
    }
}

private void Save()
{
    BindObjectToControls();

    ComputerUZEntities db = new ComputerUZEntities();

    if (isNew)
    {
        db.Items.Add(Item);
    }
    else
    {
        Item myItem = (from ctx in db.Items where ctx.ItemID == Item.ItemID select ctx).Single();
        //Item is global variable.
        myItem.Description = Item.Description;
        myItem.Category = Item.Category;
        myItem.Brand = Item.Brand;
        myItem.Price = Item.Price;
    }

    db.Items.SqlQuery(sql);
    db.SaveChanges();

    MessageBox.Show("Saved!");

    this.Close();
}

P.S 我已经尝试了所有 4 个调用 SingleSingleOrDefaultFirstFirstOrDefault。 None 个有效。

问题不在于这 4 个调用。问题是每次调用 BindObjectToControls() 方法时您都在创建新对象。不要在 BindObjectToControls() 内部创建 new Item(),而是尝试在内部构造函数或其他地方创建