оператор обновления не работает для linq - PullRequest
1 голос
/ 22 августа 2011

У меня просто сумасшествие за то, что я получил это за обновление таблицы, связанной с таблицей категорий и таблицей продуктов ... но я не добился успеха в этом ...

У меня есть эти таблицы

               product product_id
                       product_name 
                       product_description
                       product_price
                       product_image


              category  category_id
                        catgory_name
                        category_desc

Я сделал это для обновления таблицы .... с использованием структуры сущностей ...

    private void btnSave_Click(object sender, EventArgs e)
    {

        if (lblHiddenmode.Text == "Edit")
        {
            using (var dbcontext = new TsgEntities())
            {
                pictureBox1.Enabled = true;
                pictureBox1.Visible = true;
                Image image = pictureBox1.Image;
                byte[] bit = null;

                bit = imageToByteArray(image);
                product1 pd = new product1();

                string category = cbcategorytypes.Text;
                string categorydesc = tbCategoryDescription.Text;

                var c = new category { category_Name = category, category_Description = categorydesc };

                pd.product_Name = tbProductName.Text;
                decimal price = Convert.ToDecimal(tbProductPrice.Text);
                pd.product_Price = price;
                pd.product_Description = tbProductdescription.Text;
                pd.product_Image = bit;
                pd.category = c;                    
                dbcontext.SaveChanges();                 
                this.Close();
            }
        }

  }

ПРИМЕЧАНИЕ. Я обновляю имя продукта, для которого product_id равен 4, а category_id = 4

, но в этом выражении будет показано pd.category = c; я получил product_id = "0" и category_id = "0"

я делаю неправильно при обновлениитаблица с таблицей категорий .. есть ли проблема с оператором обновления

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Ваш код выше будет производить вставку, а не обновление. Чтобы выполнить обновление, сначала необходимо извлечь экземпляр product1 из вашего контекста.

Я не знаю, как выглядит ваш контекст, поэтому я не могу опубликовать точный код, но это будет примерно так:

product1 pd = dbcontext.protucts.Where(p => p.productid == 4 
                                         && p.categoryid == 4).First();

Затем вы можете внести изменения и позвонить dbcontext.SaveChanges(), и он должен обновить вашу запись.

1 голос
/ 22 августа 2011

Вы на самом деле не добавляете свои объекты в ваш контекст.

Вам нужно сделать что-то вроде:

dbcontext.products.AddObject(pd1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...