Добавление данных в базу данных asp.net

#c# #asp.net #entity-framework

#c# #asp.net #entity-framework

Вопрос:

Я хочу добавить данные в базу данных, и я получаю эту ошибку.

В EntityFramework.SQLServer произошло исключение типа ‘System.Data.Entity.Core.EntityException’.dll, но не был обработан в пользовательском коде

Дополнительная информация: Произошла ошибка при запуске транзакции при подключении к провайдеру. Подробности см. во внутреннем исключении.

Вот мой код.

 public void alarmlog(int id)
{
         AlarmLog log = new AlarmLog();

         if (id == 1)
         {
             log.SectorID = "LRD";
             log.LineNo = "L01";
             log.WorkStation = "02";
             log.LMQS = 1;
             log.StaffID = 6;
             log.DateTime = DateTime.Now;
         }

         db.AlarmLogs.Add(log);
         db.SaveChanges();
}
  

Комментарии:

1. Поместите свой код в блок try-catch, чтобы получить сведения о сообщении об ошибке, msdn.microsoft.com/en-us/library/0yd65esw.aspx

2. теперь я знаю, что мой код неисправен, но я понятия не имею, как это исправить

3. сначала поместите снимок экрана внутреннего исключения

4. я пытаюсь добавить некоторые данные в базу данных, у которых есть ID (int), LineNo (строка), WorkStation (строка), LMQS (int), StaffID (int), DateTime (datetime), какова подробная информация о внутреннем исключении. извините, что я задаю такой глупый вопрос. я такой новичок в asp.net mvc razor

5. Если вы просто пытаетесь просмотреть их в редакторе -Visual Studio, при возникновении исключения нажмите «Просмотреть сведения» и разверните исключение, чтобы увидеть InnerException. вы также можете просмотреть это программно: catch(Exception ex) { Console.WriteLine(ex.InnerException); }

Ответ №1:

У меня есть подозрение, что ваша ошибка находится в вашем if(id==1) заявлении. Я предполагаю, что вы передаете идентификатор, который не равен 1. Создается новый Alarmlog , оператор if не возвращает true, а затем вы пытаетесь добавить пустой элемент в базу данных. Если все эти поля, даже одно, если на то пошло, может не быть нулевым, генерируется исключение.

Удалите свой if-блок и посмотрите, исчезла ли ошибка:

 public void alarmlog(int id)
{
     AlarmLog log = new AlarmLog();

     log.SectorID = "LRD";
     log.LineNo = "L01";
     log.WorkStation = "02";
     log.LMQS = 1;
     log.StaffID = 6;
     log.DateTime = DateTime.Now;
     db.AlarmLogs.Add(log);
     db.SaveChanges();
}
  

Если вы хотите, чтобы мы перестали гадать, пожалуйста, сделайте то, что сказали комментаторы: разделите свой код на try { ... } catch(Exception ex) { ... } блоки, чтобы увидеть, в чем ошибка.

Комментарии:

1. о да, я понял, я просто вставил db.SaveChanges(); в цикл. я вызываю эту функцию в цикле foreach(), поэтому я получил эту ошибку. спасибо за все ответы и помощь 🙂