gnjr97 Ответов: 2

Как исправить 'entityvalidationerrors' в C#


I tried to make the application and connect it to the SQL Server. but I have a problem with the following line of code.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace CBIR
{
    public partial class training : Form
    {
        string fileName;
        public training()
        {
            InitializeComponent();
        }

        private void Pilihgbr_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog dialog = new OpenFileDialog() { Filter = "JPG Files(*.jpg)|*.jpg|PNG Files(*.png)|*.png|All Files(*.*)|*.*", ValidateNames = true, Multiselect = false })
            {
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    fileName = dialog.FileName;
                    pictureBox1.Image = Image.FromFile(fileName);
                }
            }
        }

        byte[] ConvertImage (Image img)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                return ms.ToArray();
            }
        }

        private async void Mulaitraining_Click(object sender, EventArgs e)
        {
            using (cbirEntities db = new cbirEntities())
            {
                tabel_cbir pic = new tabel_cbir() { Nama_Gambar = fileName, Gambar = ConvertImage (pictureBox1.Image)};
                db.tabel_cbir.Add(pic);
                await db.SaveChangesAsync();
                MessageBox.Show("Tersimpan", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        private void balik_Click(object sender, EventArgs e)
        {
            menuutama m1 = new menuutama();
            m1.Show();
            this.Close();
        }
    }
}


and an error occurred while running the program on the line.


await db.SaveChangesAsync();


сообщение об ошибке "EntityValidationError", как это исправить?

Any help will be appreciated. Thanks.


Что я уже пробовал:

Я попытался использовать try-catch, чтобы исправить это, но это все еще не работает.

2 Ответов

Рейтинг:
2

OriginalGriff

try ... catch блоки не "исправляют" проблемы: они позволяют вам обращаться с ними правильно или, по крайней мере, изящно.

Что вам нужно сделать, так это посмотреть на данные, которые вы передаете в свою базу данных, сравнить их с фактическими полями в ваших таблицах и выяснить, какие данные являются неправильным типом: имя вместо номера, возможно, или недопустимая дата. Используйте отладчик и узнайте, что передается, а затем сравните с дизайном БД.

Когда у вас есть эта информация, вы можете посмотреть, откуда взялись эти данные, и добавить проверку, чтобы гарантировать, что "плохие данные" не зайдут так далеко - это, вероятно, от пользователя В, и это всегда должно быть проверено и преобразовано в "собственные типы" как можно быстрее, чтобы вы не потеряли пользовательский контекст и могли дать им своевременный шанс исправить его.


Рейтинг:
1

#realJSOP

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