Как обновить данные в базе данных с помощью Entity Framework - PullRequest
0 голосов
/ 09 июня 2019

Я хочу обновить данные в базе данных, используя значения из datagridview, но мне это не удалось.Моя цель состоит в том, чтобы выполнить поиск в моем представлении таблицы данных, и если мое имя продукта существует в gridview, то я обновляю количество.

if (bunifuDataGridView1.Rows.Count > 0)
{
    foreach (DataGridViewRow row in bunifuDataGridView1.Rows)
    {
       if (Convert.ToString(row.Cells[2].Value) == bunifuTextBox11.Text)
        {
            row.Cells[5].Value = Convert.ToString(Convert.ToInt32(bunifuTextBox10.Text) + Convert.ToInt32(row.Cells[5].Value));
            found = true;

            obj5.ProductName = Convert.ToString(row.Cells[2].Value);
            obj5.CostPricePerProduct = Convert.ToInt32(row.Cells[3].Value);
            obj5.SellingPricePerProduct = Convert.ToInt32(row.Cells[4].Value);
            obj5.Quantity = Convert.ToInt32(row.Cells[5].Value);
            obj5.ExpiryDate = Convert.ToString(row.Cells[6].Value);
            obj5.ProductNumber = Convert.ToInt32(obj2.ProductNumber);
            obj5.Quantity = Convert.ToInt32(row.Cells[5].Value);

            context.Entry.state = Entrystate.modified;

            context.SaveChanges();

            inboundgoods();
            refreshcustomergrid();
        }
    }

    if (!found)
    {
        inboundgoods();
    }
}
else
{
    inboundgoods();
}

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

1 Ответ

0 голосов
/ 09 июня 2019

Это сложно отладить, не имея перед собой полного приложения, но мы можем порекомендовать некоторые изменения кода, которые помогут при отладке:

if (bunifuDataGridView1.Rows.Count > 0)
{
    foreach (DataGridViewRow row in bunifuDataGridView1.Rows)
    {
        // Compare the Product on each row, add a watch to this value to assist debugging
        var product = Convert.ToString(row.Cells[2].Value);
        if (product == bunifuTextBox11.Text) // consider rename bunfuTextBox11 to something meaningful, like 'ProductNameTextBox'
        {
            row.Cells[5].Value = Convert.ToString(Convert.ToInt32(bunifuTextBox10.Text) + Convert.ToInt32(row.Cells[5].Value)); // consider rename bunifuTextBox10 to something more meaningful like 'ProductQuantityTextBox'
            found = true;
            obj5.ProductName = Convert.ToString(row.Cells[2].Value);
            obj5.CostPricePerProduct = Convert.ToInt32(row.Cells[3].Value);
            obj5.SellingPricePerProduct = Convert.ToInt32(row.Cells[4].Value);
            obj5.Quantity= Convert.ToInt32(row.Cells[5].Value);
            obj5.ExpiraryDate = Convert.ToString(row.Cells[6].Value);
            obj5.ProductNumber = Convert.ToInt32(obj2.ProductNumber);
            obj5.Quantity = Convert.ToInt32(row.Cells[5].Value);
            //context.Entry.state=Entrystate.modified;
            // If your context has automatic change tracking enabled, this following line is not necessary
            // But you need to make sure you are setting the State on the correct object tracker instance by passing it in to the Entry method.
            var dbEntry = g.Entry(obj5);            
            if (dbEntry.State == EntryState.Detached)
                dbEntry.State = EntryState.Added;
            else
                dbEntry.State = EntryState.Modified;
            context.SaveChanges();
            inboundgoods();
            refreshcustomergrid();
        }
    }

    if (!found)
    {
        inboundgoods();
    }
}

else
{
    inboundgoods();
}

Если вы не получаете строку кода found = true; во время отладки, просмотрите логику сравнения, поищите орфографические и пробельные символы, возможно, вы захотите изменить сравнение на что-то подобное, если ваши входные данные или сохраненные данные могут иметь пробелы или несоответствующий регистр букв.

if (product.Trim().Equals(bunifuTextBox11.Text.Trim(), StringComparison.OrdinalIgnoreCase))

Потратьте время на использование значимых имен для элементов управления полями ввода данных, это облегчит чтение и понимание кода, особенно когда вы публикуете примеры кода на форумах, таких как SO!

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