Вставка строк Datagridview в базу данных с использованием Entity Framework - PullRequest
0 голосов
/ 29 октября 2019

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

Существует метод - как я добавляю Datagridview строки .

public void SepeteEkle()
{
    decimal? tutar;
    decimal? toplamtutar = 0;
    int miktarsum = 0;

    DataRow urun = dt.NewRow();

    tutar = Convert.ToDecimal(lblFiyat.Text) * Convert.ToInt32(txtMiktar.Text);
    bool itemfound = false;

    for (int i = 0; i < dgvSepet.Rows.Count; i++)
    {
        if (Convert.ToString(dgvSepet.Rows[i].Cells[0].Value) == lblStokID.Text)
        {
            miktarsum += Convert.ToInt32(dgvSepet.Rows[i].Cells[4].Value) + Convert.ToInt32(txtMiktar.Text);
            toplamtutar += Convert.ToDecimal(dgvSepet.Rows[i].Cells[5].Value) + tutar;

            dgvSepet.Rows[i].Cells[4].Value = miktarsum;
            dgvSepet.Rows[i].Cells[5].Value = toplamtutar; 

            itemfound = true;
        }
    }

    if (itemfound == false)
    {
        urun["Id"] = lblStokID.Text;
        urun["StokKodu"] = txtStokKodu.Text;
        urun["Ürün"] = txtStokAdi.Text;
        urun["Fiyat"] = lblFiyat.Text;
        urun["Miktar"] = txtMiktar.Text;
        urun["Toplam"] = tutar;

        dt.Rows.Add(urun);
        dgvSepet.DataSource = dt;
    }
}

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

Что я пробовал:

public void DatabaseSepetAktar()
{
    xstHar stokHareketModel = new xstHar();
    stokHareketModel.stharCariKod = txtCariKodu.Text;
    stokHareketModel.stharTarih = DateTime.Now;
    stokHareketModel.stharDovFiyat = Convert.ToDecimal(lblTotal.Text);

    for (int i = 0; i < dgvSepet.Rows.Count -1 ; i++)
    {
        stokHareketModel.masterId = Convert.ToInt32(dgvSepet.Rows[i].Cells[0].Value);
        stokHareketModel.stokKodu = dgvSepet.Rows[i].Cells[1].Value.ToString();
        stokHareketModel.stharGcMik1 = Convert.ToDecimal(dgvSepet.Rows[i].Cells[4].Value);

        using (fastCellDb db = new fastCellDb())
        {
            db.xstHars.Add(stokHareketModel);
            db.SaveChanges();
        }
    }
}

Но я получаю ошибку

Исключение из валидации

из Entity Framework.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 29 октября 2019

Исключение проверки возникает, когда вы пытаетесь преобразовать значение с неправильным типом, что связано с неправильной индексацией. Когда вы добавляете строку в DataGridView dt.Rows.Add(urun) с помощью текстовой индексации, меняйте способ индексации с номера на текст везде: Cells [0] → Cells ["Id"] и т. Д.

И посмотрите на строку:for (int i = 0; i < dgvSepet.Rows.Count -1 ; i++), кажется, -1 - это избыток.

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