未处理无效操作异常

本文关键字:异常 操作 无效 未处理 | 更新日期: 2023-09-27 18:06:12

我试图从实体中删除记录

得到一个错误:无效操作异常在ObjectStateManager中找不到该对象,无法删除。

,代码是这样的…


private void btnProdDelete_Click(object sender, EventArgs e){
    Image image = pictureBox1.Image;
    byte[] bit = null;

bit = imageToByteArray(image);
//var c = new category {
//  category_Name = tbCategoryName.Text,
//  category_Description = tbCategoryDescription.Text
//};
product pd = new product();
pd.product_Id = productid;
pd.product_Name = tbProductName.Text;
decimal price = Convert.ToDecimal(tbProductPrice.Text);
pd.product_Price = price;
pd.product_Description = tbProductdescription.Text;
pd.product_Image = bit;
tsgentity.DeleteObject(pd);
this.Close();

}>

修改代码:


public partial class ProductDescriptionForm : Form {
    public TsgEntities tsgentity;
    public ProductDescriptionForm() {
        InitializeComponent();
        tsgentity = new TSGEntities();
    }

未处理无效操作异常

问题是您试图删除上下文不跟踪的对象。

正确的删除方法是创建一个实例(实际上只需要id),将其附加到上下文,然后删除它:

var pd = 
    new product() 
    {
        product_Id = productid,
        EntityKey = new EntityKey("product.id", "id", productid)
    };
tsgentity.Attach(pd);
tsgentity.DeleteObject(pd);